Linux
通過反向(遠端)SSH 隧道進行 SSH 連接
這是我的設置:
- 防火牆後面的 LAN 中的 Linux 機器 A。
- 具有固定 IP 地址的 Linux 伺服器,可從 Internet 訪問。
我希望能夠通過 ssh 從遠處連接到防火牆後面的 Linux 機器。我已經閱讀了關於 ssh 隧道的資訊,我突然想到這可能是我的解決方案。我能夠在 A 和 B 之間打開一個遠端 ssh 隧道。但我不知道如何使用該隧道通過 ssh 控制 A,或者是否有可能。例如:從我的筆記型電腦通過 B 連接到 A。
這是我理解的打開隧道的命令:
ssh -R 2022:localhost:22 user@serverB
(通過 2022 埠的請求轉移到目標機器上的 22(ssh) 埠)通過 user@serverB。
打開此隧道後,通過 ssh 連接到目標電腦的操作應該是什麼?
如果我在這裡的理解有誤,請糾正我。
您指的是“SSH REMOTE FORWARDING”,並在“ man ssh ”中正確解釋了“ -R ”選項。
> man ssh [...] -R [bind_address:]port:host:hostport Specifies that the given port on the remote (server) host is to be forwarded to the given host and port on the local side. This works by allocating a socket to listen to port on the remote side, and whenever a connection is made to this port, the connection is forwarded over the secure channel, and a connection is made to host port hostport from the local machine. [...]
在您的上下文中,其中:
- 防火牆後面的 LAN 中的 Linux 機器 A (LINUX_BOX_A)。
- 具有可從 Internet 訪問的固定 IP 的 Linux 伺服器 B (SERVER_B)
SSH 遠端轉發可用於從 SERVER_B 到達 LINUX_BOX_A。唯一的條件是:LINUX_BOX_A必須能夠通過 SSH 連接到 SERVER_B。
要實現這一目標,您需要:
- 在 LINUX_BOX_A 上:
LINUX_BOX_A:~ $ ssh -R 2222:localhost:22 user@SERVER_B
這將打開一個從 LINUX_BOX_A 到 SERVER_B 的 ssh 連接,該連接將用於遠端、傳入、連接。
上述 ssh 連接建立後,您可以:
- 在 SERVER_B 上:
SERVER_B:~ $ ssh -p 2222 user@localhost
這種在 SERVER_B 上啟動的 ssh 連接將被定向到在 localhost 上偵聽的 2222 埠,該埠…綁定到先前的 ssh 連接。所以這將是“另一個 ssh 連接中的 ssh 連接”。
一些附加說明:
- 考慮到如果第一個 ssh 連接因任何原因超時和/或失敗(包括:由於不活動而被本地防火牆殺死),您將無法遠端轉發/遠端連接;
- 因為讓第一個 ssh 連接長時間處於活動狀態很重要,您可能會發現在“螢幕”會話中啟動此類 ssh 很有用
最後一點:顯然,以上所有內容都有一些(可能嚴重的)安全隱患,超出了此答案的範圍。