3 votes

Tunnel SSH X via un serveur non-X

Variation étrange sur la question standard du "tunnel multi-sauts".

Je travaille à distance en ce moment, mais j'ai plusieurs shells inversés automatiques "entrants" qui se connectent à un serveur dédié. Ce serveur dédié n'est pas ont X, mais plusieurs des serveurs Shell entrants en ont.

En gros, prenez trois machines, un ordinateur portable, un serveur, un client. L'ordinateur portable et le client ont X, le serveur non. Les trois machines ont des connexions sans mot de passe les unes aux autres (ordinateur portable > serveur, serveur > client) et peuvent établir sans mot de passe un Shell.

J'ai essayé ssh -X user@server "ssh -X user@client gui-application" et, sans surprise, je reçois des messages "Impossible d'ouvrir l'affichage".

Quelqu'un connaît-il une belle phrase pour ce genre de tunnel ?

3voto

tgandrews Points 2487

Votre commande fonctionne en fait pour moi, donc je ne pense pas que vous ayez besoin de faire quelque chose de très différent. Cependant, j'ai trouvé que cela fonctionnait beaucoup plus rapidement si j'utilisais un fichier de type -t sur le premier ssh :

ssh -tX user@server "ssh -X user@client gui-application"

Cela semble avoir un rapport avec ssh-agent et demander une phrase de passe dans mon cas, puisque mes clés ssh sont protégées par des phrases de passe. Cependant, peut-être que cela vous aidera aussi dans votre cas.

J'ai également essayé d'ajouter -A (transfert d'agent) sur les deux commandes ssh, et cela a également fonctionné, mais avec un délai de plusieurs secondes (je ne sais pas pourquoi). Il est apparu une boîte de dialogue de mot de passe GUI pour la clé pour le saut de "serveur" à "client".

Rappelez-vous que ssh avec une commande n'utilise pas .profile sur la machine distante, donc si vous comptez sur les paramètres de cette dernière, cela ne fonctionnera pas, bien que vous puissiez probablement l'exécuter explicitement avec :

ssh -tX user@server ". .profile; ssh -X user@client gui-application"

1voto

alpapan Points 11

Il semblerait que votre serveur ne permette pas l'utilisation de X. Définissez 'X11Forwarding yes' dans le fichier /etc/ssh/sshd_config de votre serveur hop (n'oubliez pas de redémarrer sshd après avoir modifié les paramètres).

0voto

user42105 Points 36

Essayez de frapper directement à travers le premier saut :

ssh -N -L 9999:client:22 user@server
ssh -p 9999 -X user@localhost gui-application

La première commande transmet le port local 9999 au port SSH du client. Laissez cette commande en cours d'exécution - elle ne produira pas de sortie après votre connexion. La deuxième commande permettra d'accéder par SSH à votre port local 9999, qui est en fait le port SSH du "client", et de lancer l'interface graphique.

Prends ça pour un tour.

SistemesEz.com

SystemesEZ est une communauté de sysadmins 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