%20%E5%AD%98%E5%8F%96%20WSL%202%20%E7%99%BC%E8%A1%8C%E7%89%88.png)
我有一台帶有 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_config
SSH 伺服器在預設連接埠 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”。