Se connecter en SSH à une machine sur un autre réseau

Le mardi 14 mars 2017 par Benjamin Boudoir

Parfois, 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.