Ssh

使用膩子在多跳上建立 SSH 隧道

  • January 4, 2013

我有一種情況,我想連接到執行 VNC 的 Linux 機器(我們稱之為 VNCServer),它位於兩台連續的 Linux 機器後面,即 ssh 到 VNCServer,我必須從我的筆記型電腦 ssh 到 Gateway1,然後從 Gateway1 shell我 ssh 進入 Gateway2,然後從那個 shell 我最終 ssh 進入 VNCServer。我無法更改網路設計和訪問流程筆記型電腦–>Gateway1–>Gateway2–>Server。我在 Gateway1 上沒有 root 權限,除 22 和 5901 之外的所有埠都已關閉。

有沒有辦法可以在我的筆記型電腦上啟動 VNC 查看器並訪問 VNCServer?我知道這可能是使用 ssh 隧道功能來完成的,並且我在我的 Windows 筆記型電腦上安裝了 putty(抱歉,工作筆記型電腦上不能安裝 Linux 或 Cygwin 等)。任何幫助將不勝感激,因為這將使我的生活更輕鬆!

Putty 確實支持 ssh 隧道,如果您展開 Connection, SSH 樹,您將看到隧道條目。

本地隧道會在您的 Windows 機器上生成一個 localhost 埠,該埠會遠端訪問您指定的 IP 地址和埠。例如,當我嘗試 RDP 到我家的桌面時,我通常會選擇一個隨機的本地埠,例如 7789,然後將桌面的本地 IP 地址(1.2.3.4:3389)作為遠端主持人。請務必點擊“添加”,然後點擊“應用”。此時,當您 rdp 到 127.0.0.1:7789 時,您將通過 putty 會話連接到 1.2.3.4:3389。

這就是有趣的地方。如果您在中間盒上設置埠隧道,設置您在膩子中指定為遠端埠的本地埠,然後您可以通過膩子反彈,通過中間盒您的最終目的地。您仍然需要進行一些 ssh 連接,但是一旦設置好,您就可以直接從 Windows 系統跨 vnc 或 rdp,我相信這就是您想要做的。

例子

  1. 轉到 Putty 中的隧道面板(如果 ssh 會話已經處於活動狀態,則可以從上下文菜單訪問連接->SSH->隧道,或者在剛啟動 putty 時在開始連接螢幕中訪問)
  2. 使用本地源 15900 和遠端源 127.0.0.1:15900 創建隧道
  3. 連接(如果尚未連接)到 Gateway1。
  4. 在 Gateway1 上, ssh -L 127.0.0.1:15900:VNCServerIP:5900 user@Gateway2
  5. 連接到 Gateway2 的 ssh 啟動後,嘗試 vnc 到 127.0.0.1:15900 ——您現在應該會在遠端看到 VNC 螢幕!

額外的好處——沒有多少人知道這一點,但這個過程也可以用來代理 IPv6/IPv4 流量。SSH 不關心它用於隧道的協議,因此理論上您可以從僅 IPv4 的系統訪問僅 IPv6 的主機,因為 ssh 伺服器是雙堆棧(同時具有 IPv4 和 IPv6 地址)。

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