從檔案讀取主機名稱的 SSH 配置

從檔案讀取主機名稱的 SSH 配置

設定如下:

  • 本地電腦我想從中 ssh 進入...
  • 閘道gateway這是一個中間節點,僅用於 ssh 到...
  • 前端節點front,又是一個中間節點,需要 ssh 進入最終節點…
  • 計算節點,這是我真正想要使用的節點

我想設定我的本機 ssh 配置,以便我可以直接鍵入ssh compute.

問題:與 和 不同gatewayfront計算節點的主機名稱不是靜態的(即一天內可能會更改多次)。我有一個腳本compute_node_hostname.shfront將輸出計算節點的名稱,即node339。我如何在我的配置中使用它?

以下帶有硬編碼計算節點的簡單配置確實有效:

Host gateway front compute
    User …
    IdentityFile ~/.ssh/id_rsa

Host front
    HostName front
    ProxyJump gateway

Host compute
    HostName node339
    ProxyJump front

約束:我無法RemoteCommand在我的配置中使用

答案1

回想一下,「ProxyJump」是「ProxyCommand」的更聰明版本 - 它透過複製 CLI 中指定的選項做了一些額外的工作,但本質上它與以下內容相同:

Host compute
    ProxyCommand ssh -W %h:%p front

其中%h%p自動擴展為請求的主機名稱和連接埠。

因此,使用動態主機名稱的方法是替換參數%h

Host compute
    ProxyCommand ssh -W $(compute_node_hostname.sh):%p front

注意:這對於具有不同主機金鑰的節點來說效果不佳。由於您是透過遠端網路上已有的另一台主機進行連接,因此停用此躍點的主機金鑰驗證應該是安全的。

相關內容