ssh:多个(未知)远程的同一个代理跳转

ssh:多个(未知)远程的同一个代理跳转

是否可以配置 ssh ProxyJump 但仍然让用户在命令行上指定远程服务器?

情况

workstation -> jumpserver -> remote1
                          -> remote2
                          -> remote3
                          -> remote4
                          -> remote5

使用与此类似的配置:

host jumpserver
     User jump_user
     HostName JJ.JJ.JJJ.JJ
     ForwardX11 yes

host remote
     ForwardX11 yes
     ProxyJump jumpserver
    
host remote1
     User remote_account_A
     HostName remote1
     ForwardX11 yes
     ProxyJump jumpserver

我希望能够在命令行上运行(类似的)这个:

$ ssh remote remote_account_A@remote55

答案1

可能最简单的方法是使用现有的命令行选项,-J对于 ProxyJump:

$ ssh -J jumpserver remote55

这和您示例中的输入量大致相同。

如果所有遥控器都有相同的前缀或后缀,Host则为所有遥控器定义一个通配符部分:

Host remote*
    HostName %h.example.com
    ProxyJump jumpserver

您可以使用 将其应用于所有“裸”名称Host * !*.*

如果它们都在同一个域下解析,请使用较新版 OpenSSH 中的主机名规范化支持(它会执行两遍配置查找,一次查找短名称,另一次查找扩展域名)。这样就可以ssh remote55在一个域下使用远程主机名,而不会影响另一个域下远程主机名的相同使用。

Host *.example.com
    ProxyJump jumpserver

Host *
    CanonicalizeHostname yes

答案2

ProxyJump命令用于连接堡垒主机,但它有更灵活的替代方案。

来自 RedHat 文章 使用 ProxyJump 通过代理或堡垒机通过 SSH 连接到远程主机

替代方案:转发 stdin 和 stdout

ProxyJump是使用 ssh 早已拥有的功能的简化方法:ProxyCommandProxyCommand通过代理或堡垒主机转发来自远程机器的标准输入 (stdin) 和标准输出 (stdout)。

本身ProxyCommand是一个用于连接远程服务器的特定命令 - 就前面的示例而言,这将是首次连接堡垒时使用的手动 ssh 命令:

$ ssh -o ProxyCommand="ssh -W %h:%p bastion-host" remote-host

%h:%p上述标志的参数指定-W将标准输入和输出转发到远程主机(%h)和远程主机的端口(%p)。

您可以在帖子中找到更多信息 ProxyCommand 用于多跳和提示身份验证,但我只想引用一条命令 Jakuje 的回答

为了好玩,这里有一行,但请注意,这种方法很难输入,也很难阅读:

ssh -oProxyCommand= \
  'ssh -W %h:%p -oProxyCommand= \
    \'ssh -W %h:%p -oProxyCommand= \
      \\\'ssh -W %h:%p username1@jumphost1\\\' \
    username2@jumphost2\' \
  username3@jumphost3' \
username4@server

基本上你需要从里面进去。

还给出了上述命令的等效配置文件:

这是您所给出的示例的示例~/.ssh/config文件:

Host jumphost1
    User username1
Host jumphost2
    User username2
    ProxyCommand ssh -W %h:%p jumphost1
Host jumphost3
    User username3
    ProxyCommand ssh -W %h:%p jumphost2
Host server
    User username4
    ProxyCommand ssh -W %h:%p jumphost3

相关内容