web-dev-qa-db-fra.com

Port de tunnel sécurisé à travers l'hôte intermédiaire

Je cherche à parcourir un port pour VNC de retour chez moi ici. Je dois sauter sur un seul hôte pour ensuite sauter mon appareil de travail.

  • sittinghere sera ma machine à domicile locale
  • hopper volonté par le hop intermédiaire que j'ai besoin de faire
  • overthere sera la machine de travail à distance

Je peux faire cela à SSH dans ma machine de travail:

ssh -t hopper "ssh -t overthere"

J'aimerais utiliser le transfert de port pour transférer le port distant 5900 sur overthere au port local 5900 sur sittinghere. Cependant, je préférerais pouvoir le faire sans contraignation d'un port ouvertement sur hopper comme quiconque sur cette machine serait capable de joindre à ma connexion VNC.

Y a-t-il un moyen pour moi de transmettre ce port à ma machine locale de manière sécurisée avec personne ne pouvant y avoir accès sur hopper?

23
Naftuli Kay

J'ai fini par utiliser certains SSH ~/.ssh/config packs pour que cela se produise:

Host hopper
    User naftuli
    ForwardAgent yes

Host overthere
    User naftuli
    ForwardAgent yes
    ProxyCommand ssh -q hopper nc overthere 22

Ce que cela fait, c'est que lorsque j'essaie de vous connecter à ssh overthere à partir de sittinghere, il se connecte à hopper puis proxie la connexion SSH au port 22 sur overthere (c.-à-d .: SSH sur overthere).

Cela a des effets secondaires géniaux:

ssh -L 5900:localhost:5900 overthere "x11vnc -display :0 -localhost"

Tout fonctionne génial et aussi loin que possible, 5900 ne sont pas ouverts sur hopper, seulement transmis directement à partir de overthere à sittinghere.

18
Naftuli Kay

Utiliser la capacité native de SSH à transférer des ports. De sittinghere exécuter:

 ssh -v -N -L 5900:overthere:5900 user@hopper

Pointez votre client VNC à localhost:5900 et le trafic sera tunnelé à overthere:5900 via la connexion SSH établie sur hopper

18
Creek

Vous pouvez transférer un port de sittinghere à overthere 'S SSH ports via hopper. Ensuite, vous pouvez utiliser ce port pour atteindre overthere directement à partir de sittinghere. Dans cette deuxième session SSH, vous pouvez transmettre VNC ou quel que soit les autres ports que vous aimez tandis que hopper ne voit qu'une session SSH cryptée.

Première session SSH:

ssh -f -N -L 7022:overthere:22 hopper

Dites maintenant au client SSH comment il peut atteindre overthere en ajoutant cette configuration à ~/.ssh/config sur sittinghere

Host overthere
    HostName hopper
    Port 7022
    HostKeyAlias overthere

Deuxième session SSH:

ssh -f -N -L 5900:localhost:5900 overthere

Ou juste une session ssh interactive régulière sans le tunnel de port VNC:

ssh overthere

Si vous ne voulez pas vous soucier d'ajouter des lignes à ~/.ssh/config Vous pouvez toujours dire comment vous connecter à overthere de la ligne de commande:

ssh -p 7022 hopper

... Mais sans le HostKeyAlias ssh ne vérifiera pas overthere 's empreinte digitale correctement.

Toutes les lignes de commande doivent être exécutées à partir de sittinghere.

Incidemment, je pense que vous n'avez probablement pas besoin d'utiliser ssh 's -t option.

1
Celada

Premier connectez la trémie tout en faisant du tunnel entre le travailleur et la maison PC.

ssh -f ismail@hopper -L 2222:overthere:22 -N

ensuite, faites SSH ro surthere avec tunnel VNC

ssh -p 2222 -f ismail@localhost -L 5900:localhost:5900

Maintenant, vous pouvez vous connecter avec VNC. Au fait, changez la configuration de VNC pour écouter localhost

1
ibaydan

Si vous utilisez le client VNC vncviewer de la ligne de commande, vous pouvez utiliser -via Basculez pour lui dire de tuer un tunnel à travers un user@Host Avant de vous connecter à un serveur VNC d'un autre hôte.

Exemple

$ vncviewer -via user@Host localhost:0

Vous pouvez également utiliser vinagre pour vous connecter via un tunnel SSH comme SO SE à travers l'interface graphique. Pour ce faire, définissez votre connexion similaire à celle-ci via la boîte de dialogue de connexion dans vinagre:

ss #1

Ce qui entraînera votre connexion à venir, tunnelé via l'hôte de tunnel SSH.

ss #2

Les références

0
slm

Le commandement suivant devrait également fonctionner parfaitement

ssh -f -N -J hopper overthere -L 5900:localhost:5900

Il a été testé avec un paramètre supplémentaire pour connecter le serveur PostgreSQL sur postgres-server au port personnalisé (-p commutateur) et aussi avec l'utilisation de nom d'utilisateur personnalisé.

ssh -f -N -J user1@jumphost -p 2222 user2@postgres-server -L 5432:localhost:5432

Comme vous pouvez le constater que la solution est simple et ne nécessite aucune modification de la configuration de SSH ou des étapes intermédiaires.

0
SimonB