【问题标题】:How to execute multiple commands on remote host connected using dual SSH connection?如何在使用双 SSH 连接连接的远程主机上执行多个命令?
【发布时间】: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 中的ProxyJumpProxyCommand 选项,无需在跳转主机上显式运行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


【解决方案1】:

考虑利用here-documents 来简化序列,而不是单行。它的优点是更容易输入长命令。

ssh -t -i key-1 user1@remote-1 <<__END__
    ssh -t -i key-2 user2@remote-2 "cmd-1;cmd-2;..."
    cmd-n
__END__

我无法在本地测试,但应该可以进一步嵌套

ssh -t -i key-1 user1@remote-1 <<__END__
    ssh -t -i key-2 user2@remote-2 <<__SUB__
        # Execute on remote2
        cmd-1
        cmd-2
        ...
__SUB__
    # Execute on remote1
    cmd-n
__END__

【讨论】:

    【解决方案2】:

    假设你不能创建配置文件来简化你在两台主机上的命令,并且你不想把它分成两个单独的命令,它应该像把最后一个命令移出内部 SSH 命令一样简单:

    ssh -t -i key-1 user1@remote-1 "ssh -t -i key-2 user2@remote-2 \"cmd-1;cmd-2;...cmd-n-1\"; cmd-n"
    
    # or
    
    ssh -t -i key-1 user1@remote-1 'ssh -t -i key-2 user2@remote-2 "cmd-1;cmd-2;...cmd-n-1"; cmd-n'
    

    如果您没有在此命令中扩展,您还应该转义您的双引号,或者只是将您的外/内引号更改为单引号。


    另外,您可以通过使用.ssh_config 文件,特别是使用ProxyJump 参数(man page) 大大简化您的SSH 命令。

    【讨论】:

      猜你喜欢
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 2018-02-07
      • 2015-05-21
      • 1970-01-01
      • 2021-06-04
      • 2012-11-07
      • 2017-08-05
      相关资源
      最近更新 更多