我需要用ssh跳转主机连接一个cd命令:
:~$ ssh -tt -C -X user1@server ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash"
但我得到以下错误:
bash: line 0: cd: /home/user1/my/work/directory: No such file or directory Connection to host closed.
似乎ssh尝试移动到服务器机器上的/my/work/directory 。 所以我试图用完整path/home/user2replace~/但是,我得到了同样的错误:
Connection to host closed.
在这两种情况下ssh把我从客户主目录到服务器主目录。 我也尝试在两个不同的步骤(客户端 – >服务器服务器 – >主机)跳转主机,它的工作原理。 看来, cd步骤是在第一个SSH(客户端 – >服务器),而不是第二个(服务器 – >主机)。
你有什么build议吗?
第一个ssh将它解释为它应该运行的两个独立命令的列表。 server上的ssh会话首先执行ssh -tt -C -X user2@host ,它立即退出,然后运行ssh -tt -C -X user2@host cd ~/my/work/directory ; bash cd ~/my/work/directory ; bash 。 你需要做的是引用从第二个SSH开始到命令结束的所有内容,这样就可以把它看作一件事情。
ssh -tt -C -X user1@server 'ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash"'
这样,当你ssh进入server ,它将执行ssh -tt -C -X user2@host "cd ~/my/work/directory ; bash"作为一个整体命令,而不是将其分解成多个部分。