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 localehopper
volonté par le hop intermédiaire que j'ai besoin de faireoverthere
sera la machine de travail à distanceJe 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
?
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
.
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
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.
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
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.
$ 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
:
Ce qui entraînera votre connexion à venir, tunnelé via l'hôte de tunnel SSH.
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.