Vnc

遠端支持:通過 ssh 隧道路由 RDP?

  • April 25, 2018

我想用 FOSS 解決方案替換 TeamViewer。我需要支持一些遠端電腦。我使用這樣的中間人伺服器在兩台電腦之間建立了一個有效的 SSH 隧道:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

這個 SSH 隧道現在正在工作。

接下來,我想使用 SSH 隧道從“Kubuntu_laptop”連接到“Kubuntu_desktop”上的桌面。

關於這條腿的連接:

Debian_Server<--nat_fw<--Kubuntu_desktop

這是它的建立方式:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

我無法更改現有的監控埠 (5234) 或遠端 (-R) 埠號(本例中為 1234)。vnc 可以通過這個現有的 SSH 連接建立隧道嗎?**更新:**答案是no;我需要設置一個新的 SSH 隧道以與 vnc 一起使用,如此處所述。

關於這條腿的連接:

Kubuntu_laptop--->nat_fw--->Debian_Server

我可以使用任何所需的 SSH 參數。

我無法打開路由器/防火牆上的任何埠。

向我推薦了 x11vnc 伺服器,所以我正在測試它。它在桌面上執行並偵聽埠 5900。但是,我在啟動 x11vnc 時沒有使用任何命令行選項,因此它可能尚未正確配置。

vnc 會在這個現有的 SSH 連接上工作嗎?請注意,沒有定義埠 5900。請注意,如上所述,我無法更改 -R 選項的埠號。

我有很多關於如何使它工作的問題,但一個是 vnc 是否可以偵聽現有埠(上例中的 -R 1234)。如果是這樣,我還能像現在一樣 ssh 進入那個盒子嗎?

這是我到目前為止所嘗試的:

在遠端桌面上(安裝了 x11vnc 伺服器):

tester@Kubuntu_desktop:~> autossh -M 5234 -i ~/.ssh/my_id_rsa -fNR 1234:localhost:5901 user@mydebian.com

確保 x11vnc 伺服器在埠 5901 上執行:

tester@Kubuntu_desktop:~> x11vnc -autoport 5901

在我的筆記型電腦上:

sudo ssh -NL 5901:localhost:1234 -i ~/.ssh/admin_id_rsa admin@mydebian.com

將本地 vnc 客戶端連接到 localhost 埠 5901

在 Kubuntu_laptop 中打開 KRDC 並連接到 (vnc)

localhost:5901

我的連接失敗 - server not found

聽起來您目前在筆記型電腦和伺服器之間有一個預設的 ssh 連接:

Kubuntu_laptop—>nat_fw—>Debian_Server

修改ssh連接的參數,這樣你就有了

-fNL [localIP:]localPort:remoteIP:remotePort

例如:

-fNL 5900:localhost:1234

如果您的筆記型電腦在預設埠 5900 上使用 VNC,那麼您將告訴您的筆記型電腦 vnc 到 localhost,然後將埠 5900 上的 VNC 流量發送到埠 1234 上的伺服器。

接下來,您需要擷取到達伺服器端 1234 埠的流量並將其轉發到桌面:

Debian_Server<–nat_fw<–Kubuntu_desktop

修改桌面ssh連接的參數以包含

-fNR [remoteIP:]remotePort:localIP:localPort

例如:

-fNR 1234:localhost:5900

發送到伺服器 localhost 上的埠 1234 的所有流量現在都將傳輸到桌面並到達 VNC 伺服器希望監聽的埠 5900。

將埠 5900 更改為適合您使用的協議。對於 RDP 可能是 3389,對於 VNC 可能是 5901,因為可能正在使用 5900。另外,我只是隨機選擇了埠 1234 用於伺服器。

*針對您更新的問題的一些說明:

  1. ssh 的預設埠是 22,因此它-p 22是多餘的,因為它會覆蓋預設值並將其設置為 22
  2. 看起來的設置localPort:remoteIP:remotePort與 ssh 用於隧道的埠無關,該埠仍為 22,除非您在客戶端上使用 -p 覆蓋它並覆蓋 ssh 伺服器上的埠。因此,前面提到的所有 ssh 命令都使用埠 22,您可以通過查看您的偵聽和已建立的網路連接來確認這一點。您無需在防火牆上打開任何其他埠。前面的命令是正確的。
  3. 根據您在更新中添加的內容,桌面的命令應該是autossh -M 5234 -fNR 1234:localhost:5900 user@mydebian.com
  4. 抱歉,就 VNC 客戶端而言,我沒有任何建議。您必須為此打開一個單獨的問題,但是我猜它會被否決,因為它是一個意見問題。

引用自:https://unix.stackexchange.com/questions/82255