WSL 2(Windows Subsystem for Linux version 2)是一個在Windows 10上執行Linux的子系統。這個強大的工具可以讓你在Windows環境中直接使用Linux系統,並運行各種Linux應用程式。但是,如果你想要從另一台電腦遠端連接到WSL 2,你可能需要進行一些額外的設定。本篇文章就來教你如何從另一台電腦連線到本機端的WSL 2。

步驟1:設定SSH伺服器

首先,你需要在WSL 2中安裝並設定SSH伺服器。你可以選擇在WSL 2中使用你熟悉的Linux發行版,例如Ubuntu,並使用sudo apt install openssh-server安裝SSH伺服器。安裝完畢後,你需要編輯/etc/ssh/sshd_config文件,確保Port設定為22,並且ListenAddress設定為0.0.0.0,這表示SSH伺服器會監聽所有網路介面上的連接請求。

步驟2:啟動SSH伺服器

在設定好SSH伺服器後,你需要啟動它。這可以通過使用sudo service ssh start命令來完成。你可以使用sudo ss -tuln確認SSH伺服器正在監聽22端口。

步驟3:設定Windows的端口轉發

由於你是要連線到WSL 2,你需要設定從外部連線進來後要轉發到哪一個port,所以我們需要在Windows中設定端口轉發:

netsh interface portproxy add v4tov4 listenport=12222 listenaddress=0.0.0.0 connectport=22 connectaddress=localhost

備註:有一說是需要將connectaddress改成你WSL 2 在你本機上的ip 但在我的case並不適用(筆者在這邊卡超久==),但但我也提供指令給讀者參考,以我的IP:172.25.240.1來說(WSL每次重啟可能會變動此IP):

netsh interface portproxy add v4tov4 listenport=12222 listenaddress=0.0.0.0 connectport=22 connectaddress=172.25.240.1

如果重啟IP變了就要重做上述動作...你要先刪除舊的,再新增新的,也提供指令如下:

netsh interface portproxy delete v4tov4 listenport=12222 listenaddress=0.0.0.0
netsh interface portproxy add v4tov4 listenport=12222 listenaddress=0.0.0.0 connectport=22 connectaddress={{你的新IP}}

步驟4:設定Windows防火牆

你還需要在Windows防火牆中設定一個規則,允許來自12222端口的連接。你可以使用以下的PowerShell命令來完成這個設定:

New-NetFirewallRule -DisplayName "WSL SSH" -Direction Inbound -LocalPort 12222 -Protocol TCP -Action Allow

步驟5:測試你的設定

現在,可以從另一台電腦嘗試使用SSH連線到你的WSL 2。使用以下命令:

ssh username@your_windows_ip -p 12222

提供連線成功範例圖:

---2023-07-02---12.19.34-1