【发布时间】:2020-03-20 20:19:39
【问题描述】:
我有两台远程服务器,我试图在我使用 ssh 命令连接的远程主机上执行多个命令。我的命令语法是这样的:
ssh -t -i key-1 user1@remote-1 "ssh -t -i key-2 user2@remote-2 "cmd-1;cmd-2;...cmd-n;"";
我尝试在两个命令之间使用分号 (;) 和 && 符号,并观察到第一个命令在 remote-2 上执行,第二个命令在 remote-1 上执行。
我的要求是我要执行除了 remote-2 上的最后一个命令之外的所有命令。而且,remote-1 上的最后一个命令。
注意:我知道如何通过连接到单个远程主机来执行多个命令。因此,如果仅在理解问题陈述后给出答案,我将不胜感激。
【问题讨论】:
-
我假设,你有 2 个主机/远程服务器和一些命令集。你正在尝试执行除了 remote2 上的最后一个命令和 remote1 上的最后一个命令之外的所有命令。我说的对吗?
-
是的。请注意,我的要求是一次执行所有命令。我无法将这些命令分解为命令序列。
-
@Shalem:我知道如果我在最后一个命令之前使用分号,最后一个命令可以在 remote-1 上执行。
-
查看
man ssh_config中的ProxyJump和ProxyCommand选项,无需在跳转主机上显式运行ssh。正确配置后,您将能够简单地运行ssh remote-2 "cmd-1; cmd-2; ... cmd-n",并且您的配置将负责通过remote-1连接到remote-2。 -
为了澄清,你是说
ssh -t -i key-2 ....作为第一个命令,cmd-1;cmd-2;....cmd-n;作为最后一个命令,还是你只是说cmd-1作为第一个命令,cmd-n作为最后一个命令命令?你有很多嵌套的东西可以解释为命令,这使得用一些有用的东西来回答有点困难!
标签: linux bash unix ssh remote-execution