#Tunnels en reverse SSH
#http://doc.ubuntu-fr.org/tutoriel/reverse_ssh
Creer un tunnel en reverse ssh :
Le principe consiste à initier une connexion depuis la machine derrière le routeur (distante) sur une machine tierce (locale), et ainsi permettre une connexion retour depuis la machine tierce qui ne sera pas bloquée.
Inspire des tutoriaux :
- http://wiki.kogite.fr/index.php/Reverse_ssh_:_Acc%C3%A9der_%C3%A0_un_serveur_derri%C3%A8re_un_NAT_-_Firewall
- http://doc.ubuntu-fr.org/tutoriel/reverse_ssh
Conventions :
- userD@distant correspond à l'utilisateur userD, sur le poste appelé distant qui a les ports entrants bloqués et donc inaccessible depuis l'extérieur
- userL@local correspond à l'utilisateur userL, sur le poste appelé local qui dispose également d'un serveur ssh, et qui va permettre d'accéder à la machine distant
1 - Création d'un utilisateur dédié sur le poste local
Créez un nouvel utilisateur spécialement pour cette connexion afin que l'utilisateur userD du poste distant ne puisse pas avoir un accès complet au poste local :
Saisissez dans un terminal sur local la commande suivante :
sudo adduser --no-create-home userL
2 - Connexion sur le poste local depuis le poste distant
Initiez une connexion sur local en saisissant sur le poste distant:
ssh -RN 22042:localhost:2042 userL@78.243.251.48
22042 est un numero de port aleatoire compris entre 1024 et 65535
2042 est le port d'écoute ssh sur la machine serveur,
userL et le mot de passe de connexion sont ceux défini précédemment.
L'option -N permet de ne pas faire apparaitre d'invite de terminal sur distant
3 - Connexion sur le poste distant depuis le poste local
La connexion étant désormais activée depuis distant sur local, le pare-feu va donc laisser rentrer la connexion reverse, à savoir depuis local sur distant.
Pour cela taper dans un terminal sur local:
ssh -p 22042 userD@localhost
22042 est le port choisi precedemment
userD est à remplacer par le nom d'utilisateur permettant de se connecter au serveur ssh sur distant
Pour une connexion sans mot de passe :
Générer une paire de clef pour userD
ssh-keygen -t rsa
Faire un echange de clef avec le serveur local:
ssh-copy-id -i ~/userD/.ssh/id_rsa.pub userL@local:
copier la cle publique "id_rsa.pub" sur le serveur : ~/.ssh/authorized_keys