如何在 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

相關內容