我在本機上配置了~/.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