设置端口转发后仍无法从Windows主机SSH连接WSL求助
WSL端口转发后SSH连接被拒绝的排查方案
以下是导致Connection refused错误的常见原因及对应解决方法:
1. Windows防火墙拦截了3333端口的入站请求
直接连接WSL内部IP正常,但通过Windows主机IP访问转发端口被拒,最常见的原因是Windows防火墙未放行该端口。解决步骤:
- 打开「Windows Defender防火墙」→「高级设置」
- 右键「入站规则」→「新建规则」
- 选择「端口」类型,下一步后输入
3333,选择「允许连接」,完成规则创建。
2. WSL的SSH服务仅监听localhost
如果WSL内的sshd服务仅绑定127.0.0.1,即使端口转发配置正确,外部请求也无法被接收:
- 在WSL终端编辑
/etc/ssh/sshd_config,找到ListenAddress配置项,修改为ListenAddress 0.0.0.0(若该行为注释状态,取消注释后修改) - 重启SSH服务:
sudo systemctl restart sshd
3. 端口转发规则未正确生效
虽然已配置netsh规则,但可能存在规则未加载或配置错误:
- 执行
netsh interface portproxy show all确认规则存在,且目标IP(172.19.56.231)和端口(22)正确 - 若规则无效,用管理员权限打开命令提示符,删除旧规则后重新添加:
netsh interface portproxy delete v4tov4 listenport=3333 listenaddress=0.0.0.0 netsh interface portproxy add v4tov4 listenport=3333 listenaddress=0.0.0.0 connectport=22 connectaddress=172.19.56.231 - 验证WSL的IP未变动:执行
wsl -d "Ubuntu-22.04" hostname -I确认IP仍为172.19.56.231
4. 3333端口未被Windows端口代理监听
执行netstat -ano | findstr :3333检查端口状态:
- 若没有任何输出,说明端口转发规则未生效,需确保配置命令以管理员权限执行,且Windows的「IP Helper」服务处于运行状态(可在服务列表中检查)
内容的提问来源于stack exchange,提问作者SH Chen
相关产品推荐
相关产品推荐

