1 votes

Hôte de saut SSH et déplacer vers un répertoire spécifique

J'ai besoin de concaténer une commande cd avec un saut d'hôte ssh:

:~$ ssh -tt -C -X user1@server ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash"

mais je reçois l'erreur suivante:

bash: line 0: cd: /home/user1/my/work/directory: Aucun fichier ou dossier de ce type
Connexion à l'hôte fermée.

Il semble que ssh tente de se déplacer vers /my/work/directory sur la machine serveur. J'ai donc essayé de substituer ~/ par le chemin complet /home/user2 mais j'obtiens la même erreur:

Connexion à l'hôte fermée.

Dans les deux cas, ssh me ramène du répertoire personnel du client au répertoire personnel du serveur. J'ai également essayé de faire un saut d'hôte en deux étapes différentes (client -> serveur, serveur -> hôte) et cela fonctionne. Il semble que l'étape cd ait été effectuée dans le premier ssh (client -> serveur) plutôt que dans le second (serveur -> hôte).

Avez-vous des suggestions?

3voto

David King Points 466

Le premier ssh interprète ceci comme une liste de deux commandes distinctes qu'il devrait exécuter. Votre session ssh sur server exécute d'abord ssh -tt -C -X user2@host qui se termine immédiatement, puis exécute cd ~/my/work/directory ; bash. Ce que vous devez faire, c'est mettre toute la chose entre guillemets depuis le début du deuxième ssh jusqu'à la fin de la commande pour que tout soit traité comme une seule entité.

ssh -tt -C -X user1@server 'ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash"'

De cette manière, lorsque vous vous connectez en ssh sur server, cela exécutera ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash" en tant que commande complète au lieu de la diviser en parties.

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