Ssh
.ssh/config 帶有可變埠的 ProxyCommand
在我工作的環境中,我們使用隧道通過 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
.