4 votes

Tunnel SSH à deux sauts

J'aimerais construire un tunnel ssh depuis mon appareil Android (appelé A) sur le port MMM vers une machine C sur le port NNN. CEPENDANT, A et C ne sont pas directement connectés. Ils ne sont connectés que par l'intermédiaire de la machine B (qui exécute également un serveur ssh). Enfin, le port NNN n'est ouvert que localement sur la machine C (qui exécute également un serveur ssh).

Ainsi, avec openssh sous unix, je peux utiliser la ligne de commande de ssh ou l'argument ProxyCommand dans .ssh/config pour archiver cela :

Host C-tunnel
   HostName C
   Port 22
   Use username
   IdentityFile ~/.ssh/myidentityfileforC.pem
   ProxyCommand ssh -e none -i /.ssh/myidentityfileforB.pem username@B nc -w 120 %h %p 2> /dev/null

Je peux alors mettre en place un tunnel directement depuis mon serveur local vers C:NNN (via la connexion ci-dessus).

Existe-t-il une application pour Android qui prenne en charge des fonctions similaires ? J'ai essayé connectbot et ssh autotunnel. Le dernier a été proche, car j'ai pu configurer un tunnel de A à B et ensuite un autre de A à C (à travers la connexion tunnelée A->B), mais l'initiation de ce dernier les a fait tomber tous les deux. La mise en place du premier tunnel et l'utilisation de connectbot me permettent de me connecter via ssh à C, mais je ne peux pas mettre en place une redirection de port directement vers C:NNN.

Des suggestions ? Y a-t-il un portage direct d'openssh que j'ai manqué ?

2voto

lurenzu Points 11

J'aimerais vous informer que JuiceSSH possède la fonctionnalité que vous essayez d'obtenir en un seul clic. Je parle de la fonction "se connecter via d'autres connexions SSH". Même la redirection locale de port depuis le second serveur via la première connexion SSH fonctionne également.

1voto

cshelton Points 41

En dehors de stackexchange, j'ai également interrogé quelques collègues. L'une de leurs suggestions s'est avérée efficace. En particulier, au lieu d'utiliser ssh autotunnel pour les tunnels, j'ai utilisé connectbot pour me connecter et créer des tunnels. Ils peuvent être superposés. Le seul inconvénient est que je laisse un shell ouvert.

Plus précisément :

  1. J'utilise connectbot pour me connecter à B (ssh, port 22) et j'ajoute ensuite une redirection d'un port 2222 sur A vers un port 22 sur C. Je laisse ce shell ouvert.
  2. Ensuite, j'établis une nouvelle connexion différente au port 2222 sur A (qui ouvre un shell sur C) et j'ajoute une redirection de port du port 2NNN vers "localhost:NNN" (qui est en fait C:NNN).

Maintenant, je peux me connecter à A:2NNN (mon hôte local, port 2NNN) et accéder à C:NNN comme s'il s'agissait d'une connexion locale. Je dois laisser les shells ouverts, mais cela fonctionne assez bien.

0voto

Frode Points 138

Ceci est basé sur les commentaires de Shelton mais ils m'ont embrouillé, donc voici comment faire un saut "-J" en utilisant ConnectBot, par exemple via quelque chose comme serveo :

  • Ajouter une connexion à l'hôte Hop (par exemple serveo). Il s'agit purement d'un "homme du milieu", qui sera utilisé pour transférer vers l'hôte réel. Par exemple : "user@serveo.net". Vous pouvez désactiver l'option "Start shell session".

    • Sauvegarder la connexion serveo.
    • Maintenez la connexion serveo dans votre liste d'hôtes et choisissez "edit port forwards".
    • Ajouter un nouveau transfert de port. Type : "Local", port source : "2222", destination "alias:22". Cela ouvre localhost:2222 lorsque cette connexion serveo est établie, ce qui fera suivre/superposer votre connexion à l'hôte cible.
  • Ajouter un nouvel hôte, correspondant au transfert de port. Par exemple, "user@localhost:2222".

Le flux de travail normal sera désormais le suivant :

  • Se connecter à l'hôte serveo. Cela démarrera le tunnel. Fermez (mais ne vous déconnectez pas), afin que le tunnel reste actif.
  • Connectez-vous au deuxième hôte (localhost:2222). Cette connexion s'effectuera à travers le tunnel jusqu'à votre hôte distant. Authentifiez-vous normalement et voilà !

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X