学习目标:
wsl 2中通过端口转发,实现局域网内其它电脑连接wsl的ubuntu
学习内容:
操作步骤
1. 确保 WSL 中的 SSH 服务已启动
在 WSL 的 Ubuntu 系统中执行以下命令:
sudo systemctl status ssh
安装 SSH 服务(如果未安装)
sudo apt update
sudo apt install openssh-server
启动 SSH 服务
sudo service ssh start
设置 SSH 服务开机自启
sudo systemctl enable ssh
2. 获取 WSL 的 IP 地址
在 WSL 的 Ubuntu 系统中执行以下命令获取其 IP 地址:
ip addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'
记录下显示的 IP 地址,例如 172.28.160.128。
3. 在 Windows 主机上设置端口转发
以管理员身份打开 PowerShell,执行以下命令:
# 获取 WSL 的 IP 地址
$wsl_output = wsl ip addr show eth0
$wsl_ip = [regex]::Match($wsl_output, '\b(?:\d{1,3}\.){3}\d{1,3}\b').Value
# 输出获取到的 IP 地址
Write-Host "WSL IP: $wsl_ip"
# 添加端口转发规则,将 Windows 主机的 2222 端口转发到 WSL 的 22 端口
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=22 connectaddress=$wsl_ip
# 创建防火墙规则,允许 TCP 协议的 2222 端口入站连接
New-NetFirewallRule -DisplayName "WSL SSH Port Forwarding" -Direction Inbound -LocalPort 2222 -Protocol TCP -Action Allow
4. WSL IP 地址变化
WSL 的 IP 地址在重启后可能会发生变化。如果连接出现问题,你需要重新获取 WSL 的 IP 地址并更新端口转发规则。可以再次运行上述修改后的脚本。
验证端口转发设置
设置完成后,你可以使用以下命令来验证端口转发规则是否正确设置:
netsh interface portproxy show v4tov4
此命令会显示当前所有的端口转发规则,确认是否包含你设置的 2222 端口到 WSL IP 地址 22 端口的转发规则。