透過第三台公共 IP 電腦在兩台後置 nat 電腦之間建立 SSH 連接

透過第三台公共 IP 電腦在兩台後置 nat 電腦之間建立 SSH 連接

我家裡有一台電腦(家庭伺服器)運行 irssi、rtorrent 等。

我希望能夠登入家庭伺服器的外殼來自任何遠端電腦(在 NAT 後面)。

我在某處有 shell 帳戶(沒有 root 存取權限),這可能會有一些用處。

這是描述情況的圖表: 在此輸入影像描述

是否可以存取我的 shell家庭伺服器?我聽說過一些有關 ssh 隧道的信息,但我找不到任何與此案例匹配的教程。

答案1

在家庭伺服器上(從第三方到家庭的隧道):
ssh -R 20000:127.0.0.1:22 thirdparty.org

這會將您的 home box 連接到第三方 shell,然後開始將第三方 shell 上連接埠 20000 的所有連線轉送至您 home box 上的連接埠 22(SSH 連接埠)。

在遠端電腦上(從遠端到第三方的隧道):
ssh -L 20000:127.0.0.1:20000 thirdparty.org

這會將您的遠端設備連接到第三方 shell,然後開始將遠端設備上的連接埠 20000 轉送到第三方 shell 上的連接埠 20000。

然後在遠端電腦上(透過隧道連接):
ssh 127.0.0.1:20000並輸入家庭伺服器的憑證

這將嘗試 ssh 到遠端機器上的連接埠 20000。由於我們設定了到第三方的隧道,#2 指令有效地將連線嘗試轉送到第三方 shell 上的 127.0.0.1:20000。然後,第一個命令再次將連線轉送到您的家庭裝置上的連接埠 22,此時 ssh 伺服器將接收該連線。

答案2

我試圖更好地解釋下面接受的解決方案。讓我們假設「機器 A」和「機器 B」都位於 NAT 防火牆後面。雖然兩者都可以透過 ssh 存取遠端「機器 R」(例如 VPS)。

R->A

ssh -R 20000:127.0.0.1:22 user@RemoteHost
  1. 以上命令在機器上執行A

  2. 從以下位置建立隧道R的20000端口) 到AA 的連接埠 22)(反向隧道)

B -> R

ssh -L 8000:127.0.0.1:20000 user@RemoteHost
  1. 上述命令執行於

  2. 從創建隧道B的8000端口) 到R的20000端口

乙->甲

ssh 127.0.0.1 -p 8000

實際連接正在進行, 那是(端口8000)-> (端口20000)-> 一個(連接埠 22)


使用 PuTTY 和 Windows 相同:

R->A

putty.exe -R 20000:127.0.0.1:22 -ssh RemoteHost -P port -l user -pw password

B -> R

putty.exe -L 8000:127.0.0.1:20000  -ssh RemoteHost -P port -l user -pw password

乙->甲

putty.exe -ssh 127.0.0.1 -P 8000 -l user -pw password

答案3

或者您也可以使用 HE.net 設定一些 IPv6 隧道並直接連接...(許多 VPN 解決方案也可以使用。)

答案4

無償的,但可能會幫助一些人..添加一張圖片來補充上面的內容。

在此輸入影像描述

相關內容