
我最近發現,使用~/.ssh/config
,我可以節省大量擊鍵並自動執行長命令行,指定大量每個主機的預設值。現在我注意到這個工具有多強大,我想知道它是否適合我的另一個用例。
我可以存取兩個主機,bastion
並且wikispy
. Bastion有一個外部IP,wikispy
只能從內部IP看到。這意味著通常為了連接到wikispy
,我需要bastion
先 ssh 到,然後再呼叫ssh wikispy
。顯然,像是連接埠轉送這樣的事情會變得複雜,這是我想避免的。
這引出了一個問題:我能否以某種方式建立~/.ssh/config
一個條目來告訴「當使用者要求標記為 的主機時wikispy
,實際連接到bastion
,然後呼叫ssh wikispy
」?是否可以透明地工作,以便我可以調用類似的東西ssh wikispy -L 9999:localhost:9999
並bastion
以允許我從內部訪問它的方式轉發端口wikispy
?
答案1
看起來這就是ProxyCommand
和的組合nc
被證明有用的地方。這是一個解決方案 - 將以下內容新增至~/.ssh/config
:
Host bastion
HostName EXTERNAL_IP
User d
Host wikispy
HostName INTERNAL_IP
User d
ProxyCommand ssh bastion nc -q0 %h 22
根據本文,您可以透過這種方式獲得多個嵌套層級。