SSH Jump Host e mova para um diretório específico

1

Eu preciso concatenar um comando cd com um host ssh jump:

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

mas recebo o seguinte erro:

bash: line 0: cd: /home/user1/my/work/directory: No such file or directory
Connection to host closed.

Parece que o ssh tenta mover para /my/work/directory na máquina do servidor. Então, tentei substituir ~/ pelo caminho completo /home/user2 , mas recebo o mesmo erro:

Connection to host closed.

Em ambos os casos, ssh traz-me do diretório inicial do cliente para o diretório inicial do servidor. Eu também tentei pular o host em duas etapas diferentes (cliente - > servidor servidor - > host) e funciona. Parece que a etapa cd foi feita no primeiro ssh (cliente - > servidor) em vez do segundo (servidor - > host).

Você tem alguma sugestão?

    
por Riccardo 04.11.2015 / 18:10

1 resposta

1

O primeiro ssh está interpretando isso como uma lista de dois comandos separados que devem ser executados. Sua sessão ssh em server está executando pela primeira vez ssh -tt -C -X user2@host , que sai imediatamente e, em seguida, executa cd ~/my/work/directory ; bash . O que você precisa fazer é citar todo o conteúdo desde o início do segundo ssh até o final do comando, para que seja tratado como uma única coisa.

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

Dessa forma, quando você executar ssh em server , executará ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash" como um comando inteiro, em vez de dividi-lo em partes.

    
por 04.11.2015 / 19:08

Tags