You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SSH配置中使用通配符(Globbing)通过SSH隧道批量连接多台服务器

如何在SSH配置中使用通配符(Globbing)通过SSH隧道批量连接多台服务器

当然可以!SSH配置本身就支持通配符(也就是globbing),完全能解决你这种需要批量配置多层跳板的场景,不用再一个个手动添加ServerB和ServerC的配置项。下面就给你具体的实现方案:

首先,保留你原来的ServerA配置(因为它是直接可达的第一层跳板):

### 第一层跳板:直接可达的ServerA
Host ServerA
    Hostname 10.0.5.101
    User jenny
    IdentityFile /home/admin/.ssh/serverA

接下来,配置所有ServerB系列主机的通用规则——用Host ServerB*就能匹配所有以ServerB开头的主机(比如ServerB1、ServerB2...ServerBn):

### 所有ServerB系列主机:通过ServerA访问
Host ServerB*
    HostName %h  # %h会自动替换成你输入的主机名(比如ServerB1),ServerA的/etc/hosts会负责解析它的IP
    User james
    ProxyJump ServerA
    IdentityFile /home/admin/.ssh/james  # 所有ServerB共用同一个密钥,刚好符合你的情况

最后是ServerC系列主机的配置,分两种情况处理:

情况1:ServerC和ServerB的命名有对应关系(比如ServerC1对应ServerB1、ServerC2对应ServerB2)

这种情况可以用SSH的参数替换自动匹配对应的ServerB跳板,不用手动关联:

### 所有ServerC系列主机:通过对应ServerB访问
Host ServerC*
    HostName %h  # 对应的ServerB的/etc/hosts会解析这个主机名的IP
    User root
    # 从ServerCn中提取数字n,自动拼接成ServerBn作为跳板
    ProxyJump ServerB${%h#ServerC}
    IdentityFile /home/admin/.ssh/ServerC1  # 所有ServerC共用同一个密钥

情况2:ServerC和ServerB的命名没有对应关系

如果你的ServerC和ServerB的命名没有规律(比如ServerC1需要通过ServerB3访问),可以在ServerA的/etc/hosts里给ServerC设置带跳板标识的别名,比如把ServerC1的别名设为ServerB3-ServerC1,然后用下面的配置:

### 所有带跳板标识的ServerC主机
Host *-ServerC*
    # 提取别名中'-'前面的部分作为跳板ServerB
    ProxyCommand ssh -W %n:%p %r@${%h%-ServerC*}
    User root
    IdentityFile /home/admin/.ssh/ServerC1

配置完成后,你直接在本地执行ssh ServerC3或者ssh ServerB5这样的命令,SSH就会自动按照配置走对应的多层跳板,完全不用手动输入复杂的跳转命令。

备注:内容来源于stack exchange,提问作者Cruise5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:58:01