是否可以有多個 SSH 主機別名?

是否可以有多個 SSH 主機別名?

我有一台筆記型電腦,顯然有時可以在我的家庭網路內部或外部。當我需要透過 SSH 連接到網路內的電腦時,連接相當簡單:

localhost $ ssh machinelearning

當我嘗試從以下位置存取機器時外部我的網絡,然後我需要連接到我的路由器,然後從那裡連接 SSH:

localhost $ ssh router.mytotallyuniquedomain.com
router $ ssh machinelearning

我記得有一個執行後一個命令的快捷方式~/.ssh/config,但目前我不記得它是什麼。

有沒有辦法讓我提供多個主機名稱或連線類型,以便當我這樣做時:

$ ssh machinelearning

SSH 將首先嘗試連接到machinelearning本地網路中的主機,然後嘗試通過隧道進入router.mytotallyuniquedomain.com,所有這些都不需要我輸入長主機名稱?

答案1

方法#1 - ProxyCommand 和 netcat

我在我的中使用這個設定$HOME/.ssh/config來促進這一點:

Host intserver1-o intserver2-o intserver3-o
    ProxyCommand ssh [email protected] nc `echo %h|sed 's/-o//'` %p

然後我就可以ssh intserver2-o從任何地方進入這個內部伺服器。當我在家時使用 LAN ssh intserver1

筆記:上述技巧需要nc在 extserver1 上安裝 netcat ( )。

方法#2 - 嵌套 ssh

或者,您也可以使用此方法:

$ ssh -t -l gatewayuser gatewayserver "ssh -l serveruser internalserver"

您基本上是在這個方法中嵌套 SSH 呼叫。

方法 #3 - ProxyCommand & ssh -W

對於較新版本的 SSH (5.4+),您可以使用ssh而不是nc透過-W交換器。

Host TARGETHOST
ProxyCommand ssh -W %h:%p PROXYHOST

&%h%p用於 的主機名稱連接埠的巨集TARGETHOST

相關內容