通過中間人伺服器的 SSH 隧道 - 如何一步連接(使用密鑰對)?
我的問題基本上是如何將我現有的兩個步驟變成一個步驟。
我使用這樣的中間人伺服器在兩台電腦之間建立了一個有效的 SSH 隧道:
Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop
我現在做的是從 Kubuntu_laptop 到 Debian_Server,然後從 Debian_Server 到 Kubuntu_desktop 的 SSH。我想做一個 SSH 命令,在我的 Kubuntu_laptop 上以 bash 的形式發出,導致我連接到 Kubuntu_desktop (shell/bash)。
我現在使用的命令如下。第1步:
me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server
第2步:
admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost
然後我通過 SSH(來自 kubuntu_laptop)連接到 kubuntu_desktop。
所有 SSH 連接都需要 RSA 密鑰。密碼登錄一直被禁用。請注意,其中兩台電腦上的電腦使用者帳戶不同。
關於這條腿的連接:
Debian_Server<--nat_fw<--Kubuntu_desktop
這是它的建立方式:
autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22
注意 Kubuntu_desktop 作為 user@mydebian.com(不是 admin@debian_server)連接到中間人。但是當我連接到 Kubuntu_desktop 時,我以管理員使用者身份連接。
我無法更改現有的監控埠 (5234) 或遠端 (-R) 埠號(本例中為 1234)。我無法更改 SSH 安全性以允許密碼登錄。我無法打開任何新的防火牆埠。我無法更改使用者帳戶(筆記型電腦除外)。
確保在 Debian 伺服器上安裝了 netcat,並
ProxyCommand
在本地 SSH 配置中使用 (~/.ssh/config
)。Host Kubuntu_desktop ProxyCommand ssh Debian_Server nc localhost 1234
感謝@Ignacio Vazquez-Abrams 以下是所有步驟:
確保在 Debian 伺服器上安裝了 netcat,並在本地 SSH 配置 (~/.ssh/config) 中使用 ProxyCommand。
我編輯配置如下:
me@kubuntu_laptop:~/.ssh$ nano config
內容是:
Host kubuntu_desktop ProxyCommand ssh debian_server_fqdn nc localhost 1234 User admin PasswordAuthentication no IdentityFile ~/.ssh/my_id_rsa
然後只需連接:
me@kubuntu_laptop:~$ ssh kubuntu_desktop
一步通過 SSH 連接到 kubuntu_desktop!完美的
更新:
這使它更加靈活:
me@kubuntu_laptop:~/.ssh$ nano config
新的內容是:
Host family_desktops ProxyCommand ssh debian_server_fqdn nc localhost %p User admin PasswordAuthentication no IdentityFile ~/.ssh/my_id_rsa
然後只需連接到媽媽:
me@kubuntu_laptop:~$ ssh family_desktops -p 1234
並連接到爸爸:
me@kubuntu_laptop:~$ ssh family_desktops -p 5678
當然,媽媽和爸爸必須設置第 0 步(來自我原來的問題),每個人都定義了自己的 -R 埠。爸爸的例子:
第 0 步(針對爸爸):
autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22
選修的:
DAD=5678 ssh family_desktops -p $DAD