從區域網路 (LAN) 存取 WSL 2 發行版

從區域網路 (LAN) 存取 WSL 2 發行版

我有一台帶有 WSL2 的 Windows 10 電腦(運行 Ubuntu 22.04.1 LTS),以及 Windows 電腦 LAN 中的一台 Linux 電腦。我能夠從 Windows 主機連接到在 WSL 中運行的 SSH 伺服器。現在我想從 Linux 電腦連接到 WSL,或從 WSL 連接到 Linux 電腦。現在根據這個答案我在 Windows 系統上的 PowerShell 中執行了以下命令:

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100

其中192.168.101.100是 WSL 的 IP。那麼如何從 Linux 機器透過 SSH 直接連接到 WSL?我嘗試過ssh -p 4000 windowsHost@windowsAdress但它不起作用:

#ssh -vvv -p 4000 windowsHost@windowsAdress
OpenSSH_6.7p1 Debian-5+deb8u8, OpenSSL 1.0.1t  3 May 2016
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to windowsAdress [windowsAdress] port 4000.

……它被困在那裡。

答案1

在你的其他問題,您將顯示 /etc/ssh/sshd_configSSH 伺服器在預設連接埠 22 上執行connectport

netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=22 connectaddress=192.168.101.100

這會將連線從 Windows 主機上的連接埠 4000 轉送到 WSL2 主機上的連接埠 22。

正如評論中提到的,您可能還需要防火牆規則。然而,你應該通常,您首次使用時會收到來自 Windows Defender 防火牆的請求以允許連線。

請記住,connectaddress每次重新啟動(或 WSL2 重新啟動)時,您都必須進行調整,因為 IP 位址是動態分配的。每次刪除舊的連接埠轉送規則也是一個好習慣。因此,我發現使用 SSH 本身來處理連接埠轉送更容易。我不會在這裡重複所有步驟,但您可以在以下位置找到詳細信息這個答案的“選項2”

相關內容