You are hereFaire un tunnel SSH

Faire un tunnel SSH


By julien - Posted on 30 June 2008

Le problème

Un PC est isolé derrière un firewall (à l’intérieur d’une entreprise ; dans une université) ; il n’est donc pas accessible directement sur l’internet via une adresse IP. Il n’y a pas non plus moyen de négocier avec le responsable du firewall pour ouvrir une route vers ce PC.

La solution

Ouvrir à partir du serveur isolé (PC1) une connection SSH vers un serveur ouvert (PC2) en forwardant un port qui pointe justement vers le port SSH du serveur isolé (PC1)

Comment mettre en place ce système

Créer une clé sur le PC1

user1@PC1:~# ssh-keygen

Enregistrez la clé dans l’emplacement proposé ; et n’entrez pas de passphrase.

Copier le fichier ~/.ssh/id_rsa.pub généré sur le serveur PC1 dans le fichier ~/.ssh/authorized_keys du dossier utilisateur user2 du PC2.

Testez la connection depuis user1@PC1 vers user2@PC2 :

user1@PC1:~# ssh user2@PC2

Acceptez l’authenticité de l’hôte(yes). Il ne doit pas vous demandez de mot de passe pour se connecter… Si cette étape fonctionne ; il vous reste à tester le port forwarding…

Test du port forwarding

Testez la connection depuis user1@PC1 vers user2@PC2, avec port forwarding du port SSH du PC1 sur le port 2222 (ou celui que vous voulez) du PC2 :

user1@PC1:~# ssh -R2222:localhost:22 user2@PC2

Une fois cette connection lancée ; vous pouvez tester dans l’autre sens ; sur une autre console (avec n’importe quel utilisateur sur PC2, pas forcément user2, et n’importe quel utilisateur sur PC1, pas forcément user1) :

user2@PC2:~# ssh user1@localhost -p2222

Si vous réussissez à vous connecter, c’est que le tunnel est maintenant opérationnel. Il faut maintenant automatiser la mise en place de ce tunnel.

Installer autossh sur le PC1

user1@PC1:~# sudo aptitude install autossh

Lancer autossh au démarrage de la machine

Editer /etc/rc.local (sur une Debian 4.0) sur le PC1

user1@PC1:~# sudo vim /etc/rc.local

Rajouter avant le exit 0 les lignes suivantes sur le PC1 :

# port forwarding with ssh 
echo adding tunnel to PC2
su user1 -c 'autossh -M0 -N -f -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -R2222:localhost:22 user2@PC2' &

Redémarrerez le PC1 pour vérifier l’existence du tunnel…

Tags

Post new comment

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Lines and paragraphs break automatically.
  • Images can be added to this post.

More information about formatting options