如何在 ssh 配置中使用 globbing 通过 SSH 隧道进行连接?

如何在 ssh 配置中使用 globbing 通过 SSH 隧道进行连接?

以下是从本地主机到 ServerC1..n 的架构

我已经~/.ssh/config在本地主机上配置了文件:

### First jump host. Directly reachable
Host ServerA
    Hostname 10.0.5.101
    User jenny
    IdentityFile /home/admin/.ssh/serverA

### Second jumphost. Only reachable via 10.0.5.101
Host ServerB1
  HostName ServerB1
  User james
  ProxyJump ServerA
  IdentityFile /home/admin/.ssh/james

### Host only reachable via serverA and ServerB1
Host ServerC1
  HostName ServerC1
  User root
  ProxyJump ServerB1
  IdentityFile /home/admin/.ssh/ServerC1

我可以使用上面的配置直接连接到ServerC1使用ssh ServerC1命令。localhost

问题是有很多ServerB's,每个都ServerB连接到多个ServerC's。所有服务器的私钥都是相同的,所以这不是问题。

我想从本地主机通过 SSH 隧道连接到 ServerC1、2、3..n 中的任意一个

ServerA/etc/hosts具有 ServerB 的所有主机名和 IP,并且每个 ServerB 在其/etc/hosts文件中都有 ServerC 的 IP。

我可以在文件中使用模式匹配localhost's ~/.ssh/config来实现这一点吗?目前我仅限于连接,ServerC1因为我特别指定了ServerB1并且ServerC1

答案1

在 reddit 的帮助下,这个问题的最佳答案是~/.ssh/config按如下方式配置文件:假设所有的 ServerB* 都有相同的 IdentityFile。

Host ServerA
    Hostname 10.0.5.101
    User jenny
    IdentityFile /home/admin/.ssh/serverA

Match originalhost ServerB*
    User james
    ProxyJump ServerA
    IdentityFile /home/admin/.ssh/james

然后在命令行:

ssh -J serverB1 -i /home/admin/.ssh/ServerC1 root@ServerC1

相关内容