WSL+SSH连接笔记

1. WSL架构理解

WSL(Windows Subsystem for Linux)是微软开发的兼容层,允许在Windows上原生运行Linux环境:

  • WSL 2架构:基于Hyper-V轻量级虚拟机运行完整Linux内核,相比传统虚拟机启动更快、资源占用更少

  • 与传统Linux的区别:WSL深度集成Windows系统,可直接访问Windows文件系统,共享网络栈和系统资源

  • 网络特性:默认NAT网络模式,WSL获得172.x.x.x私有IP地址,与Windows主机网络隔离

  • 访问限制:外部访问WSL服务需要通过Windows主机端口转发机制

2. SSH服务配置

2.1 WSL内SSH服务部署

1
2
3
4
5
6
7
# 安装并启动SSH服务
sudo apt update && sudo apt install openssh-server
sudo systemctl enable ssh
sudo systemctl start ssh

# 验证服务状态
sudo systemctl status ssh

2.2 Windows端口转发配置

1
2
3
4
5
# 配置端口转发规则
netsh interface portproxy add v4tov4 listenport=22 listenaddress=0.0.0.0 connectport=22 connectaddress=172.19.35.200

# 配置防火墙规则
netsh advfirewall firewall add rule name="WSL_SSH" dir=in action=allow protocol=TCP localport=22

3. VS Code远程开发配置

3.1 Remote-SSH扩展安装

在本地VS Code中安装必要扩展:

  • Remote - SSH

  • Remote - SSH: Editing Configuration Files

3.2 SSH连接配置

通过命令面板(Ctrl+Shift+P)选择”Remote-SSH: Connect to Host”,配置连接参数:

1
2
Host: tg@目标主机IP
Port: 22

3.3 操作系统选择

VS Code提示选择远程系统类型时,选择Linux而非Windows。技术原因:

  • 目标环境是WSL中的Ubuntu系统,运行Linux内核

  • VS Code Server需要部署Linux版本以匹配目标系统架构

  • 文件系统路径使用Linux格式(/而非\)

  • 终端环境为bash shell,需要Linux兼容的命令集

4. 连接测试与问题发现

4.1 本地连接验证

在目标Windows主机上测试SSH连接:

1
ssh tg@localhost

测试结果:连接成功,出现主机密钥确认提示,输入yes后SSH服务工作正常。

4.2 端口转发验证

检查端口转发配置和监听状态:

1
2
netsh interface portproxy show all
netstat -an | findstr :22

测试结果

1
2
3
4
5
侦听 ipv4:                 连接到 ipv4:
地址 端口 地址 端口
0.0.0.0 22 172.19.35.200 22

TCP 0.0.0.0:22 0.0.0.0:0 LISTENING

端口转发配置正确,22端口正常监听。

4.3 VS Code远程连接失败

从外网通过VPN尝试VS Code Remote-SSH连接:

1
Host: tg@目标主机IP

测试结果:连接超时,VS Code显示”Could not establish connection”错误。

4.4 直接SSH连接测试

1
ssh tg@目标主机IP

测试结果:连接超时,无法建立连接。

5. 网络连通性排查

5.1 基础网络测试

1
2
# 测试网络连通性
ping 目标主机IP

测试结果:ping失败,数据包丢失100%。

5.2 RDP连接对比测试

1
mstsc /v:目标主机IP

测试结果:RDP连接正常,可以成功建立远程桌面会话。

5.3 端口可达性测试

1
2
telnet 目标主机IP 22
nmap -p 22 目标主机IP

测试结果:22端口不可达,连接被拒绝。说明公司网络有限制,G