我已经~/.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