Flash player not detected. Please visit http://www.macromedia.com
 
> Tunnel SSH & Port Forwarding
 
 

 

Tunnel ssh et Port Forwarding

Le but de la manipulation ci-dessous est de pouvoir se connecter depuis une machine à l'extérieur de l'Observatoire sur une machine interne en utilisant "ssh".

Création des tunnels

Pré-requis: Un serveur ssh / SFTP est actif sur PCInt.
On est obligé (sauf accès direct spécifique) de passer par les étapes suivantes:

PCExt --> styx.obspm.fr --> siolino.obspm.fr --> PCInt

1- Tunnel entre PCExt --> siolino.obspm.fr

ssh -f -L2022:siolino.obspm.fr:22 login_webmail@styx.obspm.fr sleep 60 (entrez mot de passe Webmail)

Par la commande ci-dessus, on redirige le port local 2022 de votre PCExt vers le port 22 de Siolino. Une fois le tunnel mis en place, on peut accéder directement à Siolino par la commande suivante:

ssh -p 2022 login_webmail@localhost

PS: le "sleep 60" indique que vous avez 60s pour occuper le tunnel. L'intérêt est qu'une fois que vous vous serez deconnecté (de Siolino dans le cas présent), le tunnel se fermera automatiquement, sans avoir à le fermer a la "main" (a vérifer par "ps -edf | grep ssh").

2- Tunnel entre PCExt --> PCInt

On créé un deuxieme tunnel à partir du précédent

ssh -f -L2122:PCint.obspm.fr:22 login_webmail@localhost -p 2022 sleep 60 (entrez mot de passe Webmail encore)

Ici, on redirige le port local 2122 de votre PCExt vers le port 22 de PCInt via le tunnel créé précédemment.
Maintenant, on peut se connecter directement à PCInt depuis PCExt par la commande suivante:

ssh -p 2122 login_PCint@localhost

Ou transférer des fichiers par:

sftp -oPort=2122 login_PCInt@localhost

Configuration du client ssh

Pour simplifier la création des tunnels précédents, vous pouvez créér des sortes d' "alias ssh" .

Dans $HOME/.ssh/config, ajouter (apres avoir substitué PCInt, login_webmail et login_PCInt):

ForwardAgent yes

Host styx

  • Hostname styx.obspm.fr
  • User login_webmail 
  • LocalForward 2022 siolino.obspm.fr:22

Host siolino

  • Hostname 127.0.0.1
  • User login_webmail
  • Port 2022
  • LocalForward 2122 PCInt.obspm.fr:22

Host PCInt

  • Hostname 127.0.0.1
  • User login_PCInt
  • Port 2122

Depuis un terminal, vous pouvez ensuite faire

  • "ssh styx" dans une fenêtre 1
  • "ssh siolino" dans une fenêtre 2
  • "ssh PCint" dans une fenêtre 3 

 Après avoir fourni le mot de passe correspondant à chaque étape, on se retrouve connecté dans la fenêtre 3 sur PCInt.

Clés ssh

Il reste encore une simplification possible, l'utilisation de cles ssh pour éviter de rentrer le mot de passe à chaque étape:

1- A partir de PCExt, exécuter la commande suivante pour générer les cles:

ssh-keygen -t dsa

2- Copier $HOME/.ssh/id_dsa.pub dans $HOME/.ssh/authorized_keys de de Styx, Siolino et PCInt.

PS: Si vous générez des clés avec passphrase, et ne voulez pas la saisir à chaque étape, il faut installer "Openssh-askpass" sur PCExt et exécuter :

eval `/usr/bin/ssh-agent`
/usr/bin/ssh-add $HOME/.ssh/id_dsa

au démarrage de votre session.

Quelques compléments

Il est aussi possible d'utiliser des alias dans votre ~/.bashrc (ou ~/.tcshrc) au lieu de modifier $HOME/.ssh/config ou bien de mixer les 2.

Par exemple, l'alias ci-dessous met en place le double tunnel depuis votre PCExt vers PCInt (exemple pour le Bash)

alias tunnelPCInt="ssh -f -L2022:siolino.obspm.fr:22 login_webmail@styx.obspm.fr sleep 60; ssh -f -L2122:PCINt.obspm.fr:22 -p 2022 login_webmail@localhost sleep 60"

Apres avoir rentré 2 fois votre mot de passe Webmail et si vous avez laissé


Host PCInt

  • hostname 127.0.0.1
  • user login_PCInt
  • Port 2122

Dans votre $HOME/.ssh/config, vous pouvez ensuite vous connecter directement à PCInt depuis votre PCExt par "ssh PCInt" ou "sftp PCInt" si besoin de tranferts.

 

 
 
Présentation | Recherche | Enseignement | Grand Public | Centre de données | Séminaires | Contacts | Intranet