Ssh

.ssh/config 帶有可變埠的 ProxyCommand

  • October 26, 2017

在我工作的環境中,我們使用隧道通過 SSH 連接到各種伺服器。例如,我將 ‘ssh -p XXXXX username@localhost’ 訪問伺服器。

如果埠始終相同,我可以這樣做,並且我會完成:

Host somehost
 User bryan
 Hostname localhost
 Port 12345
 ProxyCommand ssh -p 2218 bryan@first.server.com -W %h:%p

但是,如果隧道關閉並重新啟動,使用的埠可以並且將會改變。這不是我有能力改變的——它內置在基礎設施中。因此,我編寫了一個程序來查找目前埠。但我也不知道如何:

a) 執行該程序並使用 %p 變數的輸出;或 b) 在 first.server.com 上執行 cron 作業以寫出包含埠的文本文件,或設置環境變數等。

實際上,我想這樣做。是否可以?

主持 somehost
使用者 bryan
主機名本地主機
 **埠`sh get_port_for_somehost.sh`**
ProxyCommand ssh -p 2218 bryan@first.server.com -W%h:%p

我現在唯一能想到的就是在我的筆記型電腦上執行一個程序,它會在查詢目前埠後重寫我的 .ssh/config,但我不想這樣做。

無法在配置文件中編寫腳本來拉取埠號的變數。

但是您可以編寫一個bash函式來為您獲取埠並將其放置在正確的位置。例如將以下內容放在~/.bashrc

function ssh-dynamic() {
 PORT=`sh get_port_for_somehost.sh`
 exec ssh -p "$PORT" somehost "$@"
}

其他配置可能停留在~/.ssh/config.

引用自:https://unix.stackexchange.com/questions/400680