You are hereFaire un tunnel SSH
Faire un tunnel SSH
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…
Post new comment