SSH 跳转主机并移动到特定目录

SSH 跳转主机并移动到特定目录

我需要将cd命令与ssh跳转主机连接起来:

:~$ 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服务器机器中。因此我尝试~/用完整路径替换/home/user2,但出现相同的错误:

Connection to host closed.

在这两种情况下,ssh 都将我从客户端主目录带到服务器主目录。我还尝试通过两个不同的步骤(客户端 -> 服务器服务器 -> 主机)跳转主机,并且成功了。似乎该cd步骤是在第一个 ssh(客户端 -> 服务器)中完成的,而不是在第二个 ssh(服务器 -> 主机)中完成的。

你有什么建议吗?

答案1

第一个 ssh 将其解释为应运行的两个单独命令的列表。您的 ssh 会话server首先执行ssh -tt -C -X user2@host,然后立即退出,然后运行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"作为整个命令执行,而不是将其分成几个部分。

相关内容