
設定如下:
- 本地電腦我想從中 ssh 進入...
- 閘道
gateway
這是一個中間節點,僅用於 ssh 到... - 前端節點
front
,又是一個中間節點,需要 ssh 進入最終節點… - 計算節點,這是我真正想要使用的節點
我想設定我的本機 ssh 配置,以便我可以直接鍵入ssh compute
.
問題:與 和 不同gateway
,front
計算節點的主機名稱不是靜態的(即一天內可能會更改多次)。我有一個腳本compute_node_hostname.sh
,front
將輸出計算節點的名稱,即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
注意:這對於具有不同主機金鑰的節點來說效果不佳。由於您是透過遠端網路上已有的另一台主機進行連接,因此停用此躍點的主機金鑰驗證應該是安全的。