Par défaut, ssh ne sait pas se connecter à un serveur si le client est placé derrière un proxy. Pour ajouter cette fonctionnalité, il faut :
– installer le paquet connect-proxy
apt-get install connect-proxy
– ajouter un fichier ~/.ssh/config (juste pour un compte) ou /etc/ssh/ssh_config (configuration globale) contenant les lignes suivantes :
# on n'a pas besoin de connect pour le réseau local
# il faut modifier ou ajouter des lignes Host pour décrire votre réseau local Host 192.168.0.* ProxyCommand /usr/bin/connect %h %p # toutes les autres adresses utilisent la commande connect
# il faut remplacer l'adresse IP et le port par les valeurs de votre proxy
Host *
ProxyCommand /usr/bin/connect -H 192.168.0.1:8080 %h %p
On peut alors se connecter sans problème à un hôte par la commande classique : ssh identifiant@serveur
Source: Stupid SSH Tricks: A Better Hosts File
J’ai bidouillé avec SSH pour me simplifier la vie. Une des pistes était de créer des host aliases dans le fichier de configuration de SSH (en général ~/.ssh/config). Et c’est plutôt facile. Voici un exemple;
Host webhost
User host_user
HostName example.com
IdentityFile ~/.ssh/some_id_dsa
La raison pour laquelle cette méthode est préférable que d’utiliser le fichier de hosts (/private/etc/hosts) est que vous pouvez par exemple utiliser des commandes comme scp.
scp ~/somefile.txt webhost:~/upload.txt
et scp, comme il utilise ssh, va comprendre ce que vous voulez dire, c’est-à-dire en réalité:
scp -i ~/.ssh/some_id_dsa ~/somefile.txt [email protected]:~/upload.txt
Si vous utilisez couramment ssh et scp comme je le fais, vous allez trouver cette méthode très pratique. Et si vous utilisez des clés ssh, cela rend le travail distant aussi commode que le travail en local.
I just had a problem to solve: Compare two server config files on two servers to make sure they’re the same. Rather than using scp to copy the file from one machine to another, I used ssh’s ability to run commands remotely to get the contents of the file and piped it into diff. Here’s an example:
ssh user@server1 'cat /path/to/config/file.conf' | diff /path/to/other/config/file.conf -
I’ll leave it as an exercise for the user to write a shell script that will do this automatically, though it should be fairly easy to do.
Source: movetoiceland.com
source: http://www.debianworld.org/securite.knockd
Knockd est un petit daemon qui autorise ou non une connexion à votre serveur. Pour cela il écoute les ports de votre machine et attend une séquence bien précise de connexions sur les ports que vous avez définis. Si la séquence définie est exécuté dans le bon ordre, le daemon va ouvrir le port et permettre une connexion pour un temps déterminé sur le port ssh par exemple. La séquence peut utiliser des connexions TCP ou UDP ou les deux.
Ainsi, d’un point de vue extérieur le serveur n’a aucun port d’ouverts exception faite pour les clients qui ont la séquence « magique ».
Lire la suite…
Bon, a priori vous connaissez la commande "ssh-copy-id" pour copier sa clé publique sur un serveur distant afin de s’identifier par clé et plus par mot de passe.
Le principe est d’avoir une paire de clés privée/publique, le plus souvent dans "~/.ssh/id_rsa(.pub)" et de la copier à l’intérieur du fichier "~/.ssh/authorized_keys" sur la machine distante.
$ ssh-copy-id -i ~/.ssh/id_rsa.pub user@host
Mais si la machine distante n’accepte pas les connexions sur le port 22 ou bien qu’il y a une redirection de ports sur le routeur, il faut lui indiquer ce port, par exemple :
$ ssh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 user@host
Mais ça ne marche pas car ssh-copy-id ne comprend que 2 paramètres et si on met "-p 2222" en second, ça n’est pas un motif de type "[user@]host", et si on le met après, en troisième, il est ignoré.
Et bien il suffit d’entourer les infos de connexion ssh par des guillemets pour qu’ils soient vus comme un seul paramètre :
$ ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 2222 user@host"
Source: Jérémy Lecour