Tunnel SSH sur plusieurs sauts à l'aide de mastic

13

J'ai une situation où je veux me connecter à une machine Linux exécutant VNC (appelons-le VNCServer) qui est derrière deux machines Linux consécutives, c'est-à-dire, pour ssh dans le VNCServer, je dois ssh dans Gateway1 à partir de mon ordinateur portable, puis à partir de Shell1 shell Je ssh dans le Gateway2, puis à partir de ce shell, je ssh enfin dans VNCServer. Je ne peux pas modifier la conception du réseau et le flux d'accès Laptop -> Gateway1 -> Gateway2 -> Server. Je n'ai aucun privilège root sur Gateway1 et tous les ports sauf 22 et 5901 sont fermés.

Existe-t-il un moyen de lancer un visualiseur VNC sur mon ordinateur portable et d'accéder au VNCServer? Je comprends que cela pourrait être fait en utilisant les fonctionnalités de tunneling ssh et j'ai du mastic sur mon ordinateur portable Windows (désolé, aucun Linux ou Cygwin, etc. ne peut être installé sur l'ordinateur portable de travail). Toute aide sera grandement appréciée car cela me faciliterait la vie!

xkcd
la source

Réponses:

19

Putty prend en charge les tunnels ssh, si vous développez l'arborescence Connexion, SSH, vous verrez une entrée pour les tunnels.

Les tunnels locaux produisent une ouverture de port localhost sur votre machine Windows qui se connecte à distance à l'adresse IP et au port que vous spécifiez. Par exemple, lorsque j'essaie de RDP sur un bureau chez moi, je choisis généralement un port local aléatoire, quelque chose comme 7789, puis je mets l'adresse IP locale du bureau (1.2.3.4:3389) comme télécommande hôte. Assurez-vous de cliquer sur "Ajouter", puis sur "Appliquer". À ce stade, lorsque vous rdp vers 127.0.0.1:7789, vous vous connecterez ensuite à 1.2.3.4:3389 au cours de la session de mastic.

C'est là que le plaisir entre en jeu. Si vous configurez ensuite un tunnel de port sur votre boîtier intermédiaire, en configurant le port local que vous avez spécifié comme port distant dans le mastic, vous pouvez ensuite rebondir à travers votre mastic, à travers le boîtier intermédiaire votre destination finale. Vous aurez toujours besoin de faire quelques connexions ssh, mais vous pourrez croiser vnc ou rdp directement à partir du système Windows une fois que vous êtes configuré, ce que je pense que vous cherchez à faire.

EXEMPLE

  1. Rendez-vous sur le panneau des tunnels dans Putty (Connexions-> SSH-> Tunnels accessibles soit depuis le menu contextuel si la session ssh est déjà active, soit dans l'écran de connexion de démarrage lorsque vous démarrez juste putty)
  2. Créer un tunnel avec la source locale 15900 et la source distante 127.0.0.1:15900
  3. Connectez-vous (s'il n'est pas déjà connecté) à Gateway1.
  4. Sur Gateway1, ssh -L 127.0.0.1:15900:VNCServerIP:5900 user @ Gateway2
  5. Une fois que le ssh vers Gateway2 est en place, essayez de vnc vers 127.0.0.1:15900 - vous devriez maintenant voir l'écran VNC de l'autre côté!

BONUS AJOUTÉ - peu de gens le savent, mais ce processus peut également être utilisé pour proxy du trafic IPv6 / IPv4. SSH ne se soucie pas du protocole qu'il utilise pour les tunnels, vous pouvez donc théoriquement accéder uniquement aux hôtes IPv6 à partir d'un système IPv4 uniquement, étant donné que le serveur ssh est à double pile (a des adresses IPv4 et IPv6.)

Peter Grace
la source
15

Il existe une alternative si vous souhaitez utiliser PuTTY pour les deux sauts. Dans cet exemple, nous passons de la passerelle # 1 (10.0.1.123) à la passerelle # 2 (10.0.1.456) au port 80 sur 10.0.1.789.

  1. Créez d'abord le saut vers la passerelle n ° 1. Configurez d'abord la connexion au premier serveur. Configurez un tunnel vers la deuxième passerelle dans Connexion> SSH> Tunnels. Dans cet exemple, nous transmettons le port 2222 à la deuxième passerelle.

    se connecter à servert

    mettre en place un tunnel

  2. Nous allons maintenant configurer le deuxième saut. Nous allons tunneler la première passerelle vers la passerelle suivante et configurer la redirection de port sur la deuxième passerelle. La connexion est établie avec localhost sur le port 2222. Ce tunnel sera acheminé via la connexion ssh en cours d'exécution vers le deuxième saut. Sur cette connexion, nous avons configuré un port de transfert du port 3333 au 10.0.1.789.

    entrez la description de l'image ici

    entrez la description de l'image ici

  3. Ouvrez maintenant un navigateur et accédez à 127.0.0.1:3333 et vous tunnelerez à travers les deux connexions SSH vers 10.0.1.789:80

Scott
la source
1
Existe-t-il un moyen d'obtenir le même résultat en utilisant une seule session de mastic avec deux tunnels configurés dans le menu SSH -> Tunnels? De cette façon, vous n'avez besoin d'ouvrir qu'une seule instance de mastic?
ulrich