Ubuntu
如何為通過 SSH 隧道的 SSH 連接配置快捷方式
我公司的生產伺服器(FOO、BAR…)位於兩個網關伺服器(A、B)後面。為了連接到伺服器 FOO,我必須使用我的使用者名 JOHNDOE 打開與伺服器 A 或 B 的 ssh 連接,然後從 A(或 B)我可以訪問任何使用標準使用者名打開 SSH 連接的生產伺服器(我們稱之為韋比)。
所以,每次我必須做類似的事情:
ssh johndoe@a ... ssh webby@foo ... # now I can work on the server
可以想像,當我需要使用
scp
或需要快速打開多個連接時,這很麻煩。我已經配置了一個 ssh 密鑰,並且我正在使用 .ssh/config 作為一些快捷方式。
我想知道是否可以創建某種 ssh 配置以便輸入
ssh foo
並讓 SSH 為我打開/轉發所有連接。可能嗎?
編輯
womble 的答案正是我一直在尋找的,但現在我似乎無法使用 netcat,因為它沒有安裝在網關伺服器上。
weppos:~ weppos$ ssh foo -vv OpenSSH_5.1p1, OpenSSL 0.9.7l 28 Sep 2006 debug1: Reading configuration data /Users/xyz/.ssh/config debug1: Applying options for foo debug1: Reading configuration data /etc/ssh_config debug2: ssh_connect: needpriv 0 debug1: Executing proxy command: exec ssh a nc -w 3 foo 22 debug1: permanently_drop_suid: 501 debug1: identity file /Users/xyz/.ssh/identity type -1 debug2: key_type_from_name: unknown key type '-----BEGIN' debug2: key_type_from_name: unknown key type 'Proc-Type:' debug2: key_type_from_name: unknown key type 'DEK-Info:' debug2: key_type_from_name: unknown key type '-----END' debug1: identity file /Users/xyz/.ssh/id_rsa type 1 debug2: key_type_from_name: unknown key type '-----BEGIN' debug2: key_type_from_name: unknown key type 'Proc-Type:' debug2: key_type_from_name: unknown key type 'DEK-Info:' debug2: key_type_from_name: unknown key type '-----END' debug1: identity file /Users/xyz/.ssh/id_dsa type 2 bash: nc: command not found ssh_exchange_identification: Connection closed by remote host
作為凱爾答案的更具體版本,您要放入
~/.ssh/config
文件中的是:host foo User webby ProxyCommand ssh a nc -w 3 %h %p host a User johndoe
然後,當您執行“ssh foo”時,SSH 將嘗試 SSH 到
johndoe@a
,執行netcat
( ),然後通過此隧道nc
執行 SSH 到。webby@foo
魔法!當然,為了做到這一點,需要在網關伺服器上安裝netcat;該軟體包適用於每個主要發行版和作業系統。
您可以在 ~/.ssh/config 文件中使用 ProxyCommand 指令,例如使用 netcat 作為中繼:
host server2 ProxyCommand ssh server1 nc server2 22
您只需使用“ssh server2”。該指令的手冊頁資訊可在“man ssh_config”中找到