SSH est un logiciel fantastique, il ne s’agit pas juste d’un shell à distance, mais d’un logiciel permettant d’ouvrir des communications cryptées entre deux points.
La fonctionnalité qui nous intéresse aujourd’hui c’est la possibilité d’ouvrir un tunnel ssh entre deux points. Imaginons que nous sommes connectés à un réseau wifi dans un environnement hostile et que nous devions lire nos mails en pop sur un serveur non crypté. Nous allons nous servir d’une machine extérieure pour crypter les communications qui passeront sur le réseau wifi. Cela marche aussi pour passer les restrictions mises en place par une entreprise sur les ports autorisés à sortir, on pourra par exemple faire de l’IRC sur le port 80.
Le dernier usage des tunnels est la possibilité de joindre des machines internes à un réseau à travers une gate.
Dans cet exemple on va créer un tunnel vers le serveur pop de noplay.net qui n’est pas accessible de l’extérieur. On va donc créer un tunnel à travers le serveur gate.noplay.net qui relaiera les communications de notre port 1110 local sur le port 110 de pop.noplay.net.
ssh -N -f noplay@gate.noplay.net -L1110:pop.noplay.net:110 sleep 60
Voici une explication complète des paramètres :
| -N | N’exécute pas de commande à distance, on veut juste faire un tunnel |
| -f | On met ssh en background |
| noplay@gate.noplay.net | Le login et le serveur qui fera le tunnel |
| -L1110 :pop.noplay.net:110 | On relaie les données arrivant sur le port 1110 local vers le port 110 de pop.noplay.net |
| sleep 60 | Si on n’a pas de communication sur le 1110 dans les 60 secondes, le tunnel sera fermé |
Vous pouvez faire plusieurs tunnels dans une même connexion :
ssh -N -f noplay@gate.noplay.net -L1110:pop.noplay.net:110
-L2225:smtp.noplay.net:25 sleep 60
Pourquoi nous ne relayons pas le port 110 en local ? C’est parce que les ports en dessous de 1024 sont réservés à l’utilisateur root.
Merci à xavier de m’avoir prodigué de précieux conseils sur ssh.