求助:通过VSCode Remote-SSH从Ubuntu连接带WSL的Windows 10主机
通过VSCode Remote-SSH从本地Ubuntu连接远程Windows 10的WSL
前置准备
确保远程Windows主机已启用WSL并安装好Linux发行版(比如Ubuntu),本地Ubuntu笔记本能通过网络访问远程Windows的IP。
1. 在WSL中配置SSH服务
这是直接连接WSL的核心步骤:
- 打开远程Windows的WSL终端,更新系统包:
sudo apt update && sudo apt upgrade -y - 安装OpenSSH服务器:
sudo apt install openssh-server -y - 编辑SSH配置文件以确保可正常连接:
调整以下配置项(按需修改):sudo nano /etc/ssh/sshd_configPasswordAuthentication yes:允许密码登录(若后续用密钥可改为no)Port 22:保持默认或改为其他端口(比如2222,避免和Windows原生SSH冲突)PermitRootLogin no:禁止root直接登录,提升安全性
- 保存退出后,重启SSH服务并设置开机自启:
sudo service ssh restart sudo systemctl enable ssh
2. 开放远程Windows的防火墙端口
在远程Windows上,打开Windows Defender防火墙,添加一条入站规则:
- 允许TCP协议的目标端口(即你在WSL中设置的SSH端口,比如22或2222)
- 允许来自本地Ubuntu所在网络的连接
3. 本地Ubuntu测试SSH连接
打开本地Ubuntu终端,尝试直接连接WSL:
ssh <WSL用户名>@<远程Windows的公网/局域网IP> -p <WSL的SSH端口>
如果能成功登录WSL,说明基础连接没问题。
(可选)配置密钥登录免密码
为了避免每次输入密码,可配置SSH密钥:
- 本地生成密钥对(一路回车即可):
ssh-keygen -t ed25519 - 将公钥复制到WSL的授权列表:
ssh-copy-id <WSL用户名>@<远程WindowsIP> -p <WSL的SSH端口>
之后再连接就无需输入密码了。
4. VSCode中配置Remote-SSH
- 打开VSCode,安装Remote-SSH扩展
- 按下
F1,输入Remote-SSH: Open SSH Configuration File,选择~/.ssh/config - 添加以下配置(根据你的实际情况修改):
Host Windows-WSL HostName <远程WindowsIP> User <WSL用户名> Port <WSL的SSH端口> - 保存配置后,再次按下
F1,输入Remote-SSH: Connect to Host,选择刚才创建的Windows-WSL - 等待VSCode建立连接,之后就能像操作本地WSL一样编辑远程WSL中的文件了
替代方案:通过Windows原生SSH转发到WSL
如果不想直接暴露WSL的SSH端口,可通过Windows的SSH服务中转:
- 在Windows上用管理员PowerShell安装并启用SSH服务:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType 'Automatic' - 编辑Windows的SSH配置文件
C:\ProgramData\ssh\sshd_config,添加端口转发规则:Match User <你的Windows用户名> LocalForward 2222 localhost:22 - 重启Windows SSH服务:
Restart-Service sshd - 本地Ubuntu和VSCode的配置改为连接Windows的SSH端口(默认22),登录后执行
wsl即可进入WSL环境
内容的提问来源于stack exchange,提问作者KKK
相关产品推荐
相关产品推荐

