情境
我正在努力改進我的工作流程。
目前我有一台桌上型電腦(基本上有一個 GPU)和一台筆記型電腦。即使我遠端使用筆記型電腦(它們都運行 Linux),我也想利用桌面
在我的大學中,只有 80 連接埠對外部連接開放。
目前的解決方案
我的桌面有一個 SSH 伺服器,我在 NAT 中進行一些連接埠轉送wanaddr:80 -> localaddr:22
以避免大學網路的限制。
此外,我正在部署程式碼並使用 IntelliJ IDE 與遠端解釋器一起運行,它的工作方式就像一個魅力。
問題
我需要遠端使用更多服務,例如tensorboard
,,,MLFlow
。jupyter
由於我必須使用 WAN 端的端口 80,所以我不能只端口轉發其他端口,因此出現了困難。
嘗試的解決方案
假設我的桌面網域是desktop.dev
.
我正在嘗試將特定的子位址重新導向到正確的服務,例如
ssh.desktop.dev:80 -> <?> -> localhost:22
tensorboard.desktop.dev:80 -> <?> -> localhost:8888
jupyter.desktop.dev:80 -> <?> -> localhost:8000
我嘗試使用 Caddy,但後來我了解到它只支援 HTTP 請求,我正在研究 Traefik,但我不知道如何輕鬆做到這一點。
你能為我指出正確的方向嗎?
答案1
使用 SSH 連接埠轉送(-L 選項)。在你的家用機器上,隻公開 ssh。最終連接到哪個連接埠並不重要; 80是可以接受的。在家用電腦上,在環回設備上運行服務或至少使它們可從環回使用。
然後從漫遊站連接到那裡: ssh -p home-port home.address -L 8888:localhost:8888 -L 8000:localhost:8000 等。
(如果你在Windows下putty可以做到這一點)
然後,在您的漫遊站上連接到本機。 ssh 用戶端會將流量隧道傳輸到您家用電腦上的所述連接埠。如果您在漫遊站上建立到localhost:8888 的tcp 連接,ssh 用戶端將接受,然後在家庭電腦上建立到localhost:8888 的連接,然後來回代理資料包,所以您最終會像您的家庭服務出現在您的漫遊站。
您也可以使用 -R 選項進行反向轉發。如果轉送目的地不是本機,但可以從家庭存取的任何其他內容,則可以存取無法從漫遊站直接存取的內容:-L 7777:some.irc.server:6666,並且到localhost:7777 的連線將如下如果您連線到 some.irc.server:6666。
無論您做什麼,都只能透過網路看到您的家庭和漫遊站之間的 SSH 流量。