Ubuntu

如何為通過 SSH 隧道的 SSH 連接配置快捷方式

  • April 12, 2018

我公司的生產伺服器(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”中找到

引用自:https://serverfault.com/questions/48808