当前位置: 首页 > news >正文

VSCode连接远程Windows11的WSL2的项目

前言

以前我尝试过使用远程连接(局域网)另一台Windows11主机上的WSL2进行开发。
在那会,我能够成功通过VSCode的Remote-SSH插件和WSL插件连接远程主机上WSL2中的项目。
具体操作:先使用Remote-SSH插件连接远程主机,然后Remote Explorer再切换为WSL Targets(此时会检测到远程主机上的WSL2系统),选择对应的WSL2子系统连接,最后再进入到对应的项目路径下作为工作区。

那时候这种方式基本没有问题,开发过程也算流畅,印象中没有碰到过什么连接上的问题。

现在,我尝试在新的电脑和新的远程主机上(本地机和远程机都不同了),想如法炮制当时的做法,但是在最后一步失败了。
具体来说,我能够成功连接到远程主机的WSL2子系统上,并且能进入到指定的项目路径下,但是止步于信任工作区这一操作上。我每次都选择“trust&continue”,但最后都是断连并且显示“Restricted Mode”
我尝试过在设置里将Security->Workspace->Trust:Enable这一项给设置成false(取消勾选),结果是可以成功连接的。但是奇怪的是将项目路径设置为受信任的工作区就不行。
除此之外,我还尝试过将远程WSL2的.vscode-server删掉,把本地的VSCode连接记录清空,重新尝试,也都没用。

如果有头绪/解决方法,希望提出。

通过SSH跳板实现

手把手教程

参考博文:
https://zhuanlan.zhihu.com/p/404179039
https://zhuanlan.zhihu.com/p/691385210

Windows11配置SSH

本地和远程安装运行OpenSSH

管理员权限运行PowerShell:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

查看结果,若显示Installed表明已安装,显示NotPresent则未安装需要自行安装:

Name  : OpenSSH.Client~~~~0.0.1.0
State : Installed/NotPresentName  : OpenSSH.Server~~~~0.0.1.0
State : Installed/NotPresent

安装指令分别如下(安装可能会比较慢,需要耐心等待):

# 安装OpenSSH客户端
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0#安装OpenSSH服务端
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

启动SSH服务器:

# 启动sshd服务
Start-Service sshd# 将sshd服务设置为自动启动,若不设置需要在每次重启后重新开启sshd
Set-Service -Name sshd -StartupType 'Automatic'# 确认防火墙规则,一般在安装时会配置好
Get-NetFirewallRule -Name *ssh*# 若安装时未添加防火墙规则"OpenSSH-Server-In-TCP",则通过以下命令添加
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

将本地公钥添加到远程许可文件中

本地生成密钥对:

# 设置保存路径 系统会提示输入密钥保存路径,按回车使用默认路径:C:\Users\<用户名>\.ssh\id_ed25519
# 设置密码短语(可选) 系统会要求输入密码短语,为私钥增加保护。直接回车可跳过。
# 查看生成结果 密钥对会保存在 .ssh 文件夹中: 私钥:id_ed25519 公钥:id_ed25519.pub
ssh-keygen -t ed25519

切换到远程操作
将本地生成的公钥内容添加到远程authorized_keys文件中:

echo <公钥内容> > C:\Users\<Username>\.ssh\authorized_keys

添加后再赋予权限:

icacls.exe "C:\Users\<Username>\.ssh\authorized_keys" /inheritance:r /grant "<Username>:F" /grant "SYSTEM:F"

修改ProgramData\ssh\sshd_config文件(需要管理员权限):

#允许公钥授权访问,确保条目不被注释
PubkeyAuthentication yes#授权文件存放位置,确保条目不被注释
AuthorizedKeysFile	.ssh/authorized_keys#可选,关闭密码登录,提高安全性
PasswordAuthentication no#注释掉默认授权文件位置,确保以下条目被注释
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

重启sshd服务(管理员权限运行PowerShell):

Restart-Service sshd

完成。

卸载OpenSSH

# 卸载 OpenSSH 客户端
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0# 卸载 OpenSSH 服务端
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

WSL2配置SSH

安装:

sudo apt remove openssh-server # To ensure the latest version
sudo apt install openssh-server

在远程主机上测试与WSL2的SSH连通:

ssh <WSL2_Username>@localhost

设置自启动脚本,vim ~/.start-services.sh写入以下内容:

# ~/.start-services.sh
#!/bin/bash# 启动 SSH 服务(以 Ubuntu/Debian 为例)
sudo service ssh start

赋权:

chmod +x ~/.start-services.sh

设置自启动,vim ~/.bashrc文件末尾添加以下内容:

# Auto-start services when WSL starts
if [ -z "$SSH_STARTED" ]; thenexport SSH_STARTED=1~/.start-services.sh
fi

在本地主机测试SSH Jump连接正常:

ssh -J <远程主机用户名>@<远程主机IP>:<远程主机端口> <WSL2_Username>@localhost

设置本地的SSH config实现远程连接:

Host <自行指定你的连接名字>HostName localhostUser <WSL2_Username>ProxyJump <远程主机用户名>@<远程主机IP>:<远程主机端口>StrictHostKeyChecking noUserKnownHostsFile=/dev/null

至此,本地的VSCode就能直接连接远程主机的WSL2中的项目作为工作区了

直接穿透

就是在WSL2里安装运行frp直接穿透出去,这里就不详细展开了。

http://www.jsqmd.com/news/155816/

相关文章:

  • 2025.9.19社团管理(三)
  • 几个新的浏览器JS API
  • 推荐阅读:gRPC 的设计原理与网络编程实践
  • 【Week1_Day3】【软件测试学习记录与反思】【Linux的系统性学习、定义优先级的维度、Linux系统搭建与终端练习、反思与改进】
  • 大模型Token消耗监控工具开发实践(Python实现)
  • 推荐阅读:gRPC 协议与网络编程中的实践挑战
  • reprint, Use of logrotate
  • AI开发者必备工具链:PyTorch + Jupyter + CUDA一体化镜像
  • 推荐阅读:深入理解Socket网络编程及其在现代通信中的作用
  • linux-vim常规操作
  • 99线怎么算?99线、90线盯哪根? 面试官:你连这都分不清,出门左拐不送。直接凉凉
  • C++虚函数表与多重继承内存布局深度剖析
  • YOLO推理请求限速控制:保护GPU服务稳定性
  • 一篇爆款技术文带来的流量:如何引导用户购买GPU算力
  • 模拟信号处理发展,从硬件优化到智能生态的全维度突破
  • YOLO系列再进化:YOLOv11适配PyTorch-CUDA全流程
  • PyTorch-CUDA基础镜像使用指南:支持多卡并行的AI训练环境
  • 2025最新!10个AI论文软件测评:本科生写论文救星大公开
  • 解锁2026年商业未来:四大核心概念深度解析
  • 机器学习——基本概念
  • 计算机毕设java后疫情时代小区服务网站 基于Java的后疫情时代社区服务管理系统设计与实现 Java技术驱动的后疫情时代小区服务平台开发
  • PyTorch+CUDA环境搭建耗时太久?试试我们的镜像方案
  • 机器学习——生态系统
  • 从爱好到专业:AI初学者如何跨越CAIE认证的理想与现实鸿沟
  • 静态库与动态库
  • 卷积神经网络性能瓶颈突破:使用CUDA加速卷积运算
  • 那台NAS,是我为自己买的“赛博菩萨”
  • PyTorch-CUDA镜像安全性评估:企业级部署注意事项
  • SSH连接超时?PyTorch-CUDA镜像中的安全设置建议
  • 2025.9.18社团管理(二)