间接ssh,单个命令后closures连接

我试图通过多个SSH执行多个命令,基本上:

ssh -t host1 ssh -t host2 ssh -t host3'cmd1; CMD2; CMD3'

我想执行最终主机(host3)上的所有命令。 但是,如果我使用上面的行,会发生什么情况是,在“cmd1;”之后立即closures与host3和host2的连接。

例如,如果我使用cmd1,cmd2和cmd3的主机名,输出将是

主机3
连接到host3closures。
连接到host2closures。
主机1
主机1
连接到host1closures。

如果我以下面的方式使用双引号

ssh -t host1“ssh -t host2 ssh -t host3'cmd1; cmd2; cmd3'”
要么
ssh -t host1 ssh -t host2“ssh -t host3'cmd1; cmd2; cmd3'”

我得到的输出:

主机3
连接到host3closures。
主机2
主机2
连接到host2closures。
连接到host1closures。

有人可以向我解释这个吗? 以及如何获得在host3上执行的所有命令

所需要的是大量的报价:

ssh -t host1 'ssh -t host2 "ssh -t host3 '"'"'cmd1; cmd2; cmd3'"'"'"' 

我在这里做的只是把你的最后一个命令,并添加'周围。 但是其他的东西需要相应的调整。 任何以前存在的'放在我所放的部分内'都需要用'"'"'replace

取而代之的原因是:

  • 第一个'终止引用的string。
  • 第一个"开始引用一个新的string"
  • 中间'不被shell解释,它只是被当作文字来对待。
  • 最后的"结尾string引用"
  • 最后一个'开始一个新的引用string。
  • 三个string由shell自动连接。