Se connecter en SSH à une machine sur un autre réseau
Le mardi 14 mars 2017 par Benjamin BoudoirParfois, on veut se connecter sur une machine qui ne nous est pas directement accessible. On peut rebomdir dessus, mais ce n'est pas forcément le plus pratique. En particulier, quand on a besoin de faire des copies de fichiers par exemple.
Voici donc, quelques moyens de s'en sortir.
Tunnel SSH
Une technique courante, consiste à faire un tunnel SSH sur la gateway et ouvrir un port local sur sa machine pour se connecter à la machine qui nous interesse.
Pour celà, on ouvre d'abord la connexion sur la passerelle SSH :
user@localhost$ ssh $login@$gateway -L 2222:$mamachine:22
Explications :
- -L : ouverture d'un port local sur la machine courante
- 2222 : le numéro du port ouvert sur ma machine pour le tunnel (ici, '''2222''')
- mamachine : le nom de la machine que je veux atteindre
- 22 : le port du serveur SSH de $mamachine
Une fois le tunnel ouvert, on se connecte à sa machine sur le port local indiqué :
user@localhost$ scp -P 2222 $fichier $login@localhost
Proxy SSH
La technique du proxy est plus simple à mettre en œuvre. Il suffit pour cela d'ouvrir le fichier de configuration ssh (~/.ssh/config) et d'ajouter un bloc tel que :
Host proxied
User $login
Hostname $mamachine.$fqdn
ProxyCommand ssh $gateway -W %h:%p
Et lors de la connexion, une demande de mot de passe serait faite pour les deux serveurs (sauf si on a ajouté sa clef ssh sur les deux) :
user@localhost$ scp file proxied:/dev/null
login@gateway's password:
login@mamachine's password:
file 100% 250KB 249.9KB/s 00:00
Cette technique a l'avantage d'être "fire and forget", il suffit en effet de faire la configuration une seule fois et tous les logiciels utilisant ssh utiliseront automatiquement le proxy.