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

在 VSCode 中配置 SSH 并实现 X11 转发:服务器程序远程桌面显示

在 VSCode 中配置 SSH 并实现 X11 转发(Windows、macOS、Linux)

你需要在VSCode中配置支持X11转发的SSH连接,实现远程运行带图形界面的程序、窗口能映射到本地显示的效果,核心需要完成本地X11服务搭建远程服务器SSH配置开启X11VSCode的SSH插件配置三步,下面分Windows/macOS/Linux三大系统详细说明(Windows是最常用且步骤稍多的场景,重点讲解)。

前提准备

  1. VSCode已安装Remote - SSH插件(微软官方的,插件ID:ms-vscode-remote.remote-ssh);

  2. 本地能通过SSH正常连接远程Linux服务器(账号、密码/密钥已配置);

  3. 远程服务器是Linux系统(X11是Linux/Unix的图形转发协议,Windows服务器不适用)。


一、Windows系统(本地)配置步骤

Windows本身没有内置X11服务,需要先安装X11服务器软件,推荐轻量易用的XmingVcXsrv(VcXsrv是开源免费的,更推荐)。

步骤1:安装并配置VcXsrv(本地X11服务)

  1. 下载VcXsrv:官网下载,直接安装(下一步到底即可);

  2. 启动VcXsrv:桌面找到XLaunch,按向导配置:

    • 第1步:选择Multiple windows(多窗口,推荐),点击Next;

    • 第2步:选择Start no client(仅启动X11服务,不启动默认程序),点击Next;

    • 第3步:取消勾选Native opengl(关键!勾选会导致部分图形程序闪退),勾选Disable access control(允许远程服务器连接本地X11,否则会权限拒绝),点击Next;

    • 第4步:直接点击Finish,桌面右下角会出现VcXsrv的图标(X形状),表示X11服务启动成功。

  3. 关键:VcXsrv需要一直后台运行,关闭则X11转发失效;可将XLaunch添加到Windows开机启动,避免每次手动打开。

步骤2:配置Windows系统环境变量(告诉SSH本地X11地址)

SSH需要通过环境变量DISPLAY知道本地X11服务的地址,Windows下配置:

  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」;

  2. 用户变量中,点击「新建」,添加变量:

    • 变量名:DISPLAY

    • 变量值:localhost:0.0(固定值,对应VcXsrv的默认监听端口);

  3. 点击确定保存,重启VSCode让环境变量生效(重要)。

步骤3:远程Linux服务器开启X11转发(核心配置)

需要修改服务器的SSH配置文件sshd_config,确保X11相关选项开启,操作如下:

  1. 远程登录服务器,执行命令编辑配置文件(需要root权限):

    sudo vi /etc/ssh/sshd_config
  2. 找到以下配置项,修改为对应值(如果注释掉了,先删除#取消注释):

    X11Forwarding yes # 开启X11转发,必须为yes X11UseLocalhost no # 关键!Windows下必须设为no,否则会端口映射失败 X11DisplayOffset 10 # 可选,默认值即可,避免端口冲突 AllowTcpForwarding yes # 开启TCP转发,X11依赖此选项 PermitTunnel yes # 可选,增强转发兼容性
  3. 保存并退出vi(按Esc,输入:wq回车);

  4. 重启服务器的sshd服务,让配置生效:

    # CentOS/RHEL/Fedora sudo systemctl restart sshd # Ubuntu/Debian sudo service ssh restart
  5. 验证服务器是否安装X11基础库(如果远程没有图形库,运行图形程序会报错):

    # Ubuntu/Debian sudo apt install -y x11-apps # 包含xeyes、xclock等测试工具 # CentOS/RHEL/Fedora sudo dnf install -y xorg-x11-apps

步骤4:VSCode配置SSH连接(开启X11转发)

  1. 打开VSCode,按F1,输入Remote-SSH: Open SSH Configuration File,选择用户级配置文件(如C:\Users\你的用户名.ssh\config,推荐);

  2. 在配置文件中,为你的远程服务器添加/修改配置,必须加上ForwardX11 yesForwardX11Trusted yes

    # 示例配置(按需修改Host、HostName、User、IdentityFile) Host my-server # 自定义连接名,VSCode中显示的名称 HostName 192.168.1.100 # 远程服务器IP/域名 User root # 远程登录账号 Port 22 # SSH端口,默认22 IdentityFile C:\Users\你的用户名\.ssh\id_rsa # 可选,密钥登录的私钥路径,密码登录可省略 ForwardX11 yes # 核心!开启X11转发 ForwardX11Trusted yes # 信任X11转发,避免权限问题 ConnectTimeout 30 # 可选,连接超时时间
  3. 保存配置文件,按F1输入Remote-SSH: Connect to Host,选择上面的my-server,输入密码/确认密钥,连接远程服务器;

  4. 连接成功后,VSCode右下角会显示「SSH: my-server」,表示已进入远程开发环境。

步骤5:测试X11转发是否生效

  1. 在VSCode中打开远程终端(终端→新建终端,默认是远程服务器的终端);

  2. 执行测试命令xeyes(会弹出一个跟着鼠标动的眼睛窗口),或xclock(时钟窗口):

    xeyes
  3. 如果本地弹出对应的图形窗口,说明X11转发配置成功;如果报错,看文末「常见问题排查」。


二、macOS系统(本地)配置步骤

macOS内置了X11服务的基础组件,但需要安装XQuartz(苹果官方的X11实现),步骤比Windows简单:

  1. 安装XQuartz:官网下载,安装后必须重启Mac(核心,否则X11服务不生效);

  2. 启动XQuartz:启动台找到XQuartz,打开后会自动运行X11服务,无需额外配置;

  3. 远程服务器配置:和Windows步骤3完全一致(sshd_configX11Forwarding yesX11UseLocalhost no);

  4. VSCode SSH配置:和Windows步骤4一致,配置文件中加上ForwardX11 yesForwardX11Trusted yes

  5. 测试:远程终端执行xeyes,本地会弹出图形窗口,直接生效。


三、Linux系统(本地)配置步骤

Linux系统本身原生支持X11,无需安装额外X11服务,步骤最简:

  1. 本地确保安装了X11基础库(一般桌面版Linux都自带,服务器版执行sudo apt install x11-apps/sudo dnf install xorg-x11-apps);

  2. 远程服务器配置:仅需将sshd_configX11Forwarding yes开启即可(X11UseLocalhost可设为yes,也可no);

  3. VSCode SSH配置:添加ForwardX11 yesForwardX11Trusted yes

  4. 测试:远程终端执行xeyes,本地直接弹出图形窗口。


四、常见问题排查(配置失败必看)

问题1:执行xeyes报错Error: Can't open display: localhost:10.0DISPLAY is not set

  • 原因1:本地X11服务未启动(Windows:VcXsrv没开;macOS:XQuartz没开);

  • 原因2:Windows未配置DISPLAY环境变量,或未重启VSCode;

  • 原因3:远程服务器sshd_configX11UseLocalhost设为yes(Windows必须设为no);

  • 解决:逐一检查上述三点,重启对应服务/VSCode。

问题2:执行xeyes报错No protocol specifiedPermission denied

  • 原因1:Windows的VcXsrv未勾选Disable access control

  • 原因2:VSCode SSH配置未加ForwardX11Trusted yes

  • 原因3:本地DISPLAY环境变量值错误(必须是localhost:0.0);

  • 解决:重新配置VcXsrv,补全VSCode的SSH配置项。

问题3:VSCode连接远程时卡住,或X11窗口卡顿

  • 原因1:网络延迟高(X11是基于TCP的图形转发,对网络有一定要求);

  • 原因2:VcXsrv勾选了Native opengl

  • 解决:取消Native opengl,使用有线网络,或降低远程图形程序的分辨率。

问题4:远程服务器执行图形程序,本地无窗口但无报错

  • 原因:远程服务器的DISPLAY环境变量未被正确映射(VSCode的SSH插件会自动设置,无需手动改);

  • 解决:在远程终端执行echo $DISPLAY,查看是否有值(如localhost:10.0),如果为空,重新连接VSCode的SSH。


总结

VSCode配置带X11的SSH核心要点:

  1. 本地必须有X11服务:Windows装VcXsrv(关OpenGL+开免访问控制)、macOS装XQuartz、Linux原生支持;

  2. 远程服务器关键配置sshd_configX11Forwarding yes + X11UseLocalhost no(Windows必设no),重启sshd;

  3. VSCode SSH配置:必须添加ForwardX11 yesForwardX11Trusted yes,Windows需配置本地DISPLAY=localhost:0.0并重启VSCode;

  4. 测试用xeyes/xclock,能弹出图形窗口即配置成功,后续可远程运行PyQt、Matplotlib、GCC图形调试等带界面的程序。

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

相关文章:

  • 【好写作AI】当AI开始“找茬”:它能发现学术空白,但创新真的能自动化吗?
  • GBase 8s数据库实时共享交换集群解析(五) 分享
  • 【好写作AI】别再“学术炼丹”了!让AI帮你把数据“腌”成入味的观点
  • 实至名归,GBASE南大通用为金融数字化保驾护航
  • 2026年全国工厂搬迁厂家哪家强? 实操优势与选型逻辑指南 核心竞争力盘点
  • 上海高性价比婚恋公司怎么选择,梅园婚恋是优选
  • 马尔科实力如何?盘点2026年性价比高的液压升降平台厂家
  • 聊聊性价比高的密封橡胶工作指示牌哪家好
  • 2026年水式模温机专业厂家推荐,阿科牧机械口碑良好
  • 2026年靠谱的冷轧钢带生产厂家排名,硕达工贸榜上有名
  • MATLAB SIMULINK模型测试利器:自动化测试工具、自动生成报告,环MIL测试能力展示...
  • 技术革新案例分享:西门子S7-1500在制药厂暖通空调与洁净空调PLC程序中的应用
  • 孤能子视角:“社会心理学“
  • 兰亭妙微方法论:B 端界面布局设计技巧,让复杂业务逻辑一目了然
  • 2026免费降AI工具不靠谱?这几款付费工具更稳
  • 知网vs维普AIGC检测:同一篇论文结果差多少?
  • 给APP添加统计自己生病情况的功能+统计自己生活开支的功能
  • 【好写作AI】你的论文,为何需要一位“懂你专业梗”的AI队友?
  • 电动汽车参与运行备用的能力评估及其仿真分析
  • 清洁生产环保数据采集远程通信系统方案
  • 2026陕西西安人力资源公司排名揭晓|TOP5西安劳务派遣公司推荐(含社保代缴与劳务外包服务商)
  • 2026年沈河有名的隐形车衣门店哪家好,车衣改色/贴车衣/太阳膜/汽车贴膜/贴太阳膜/隐形车衣,隐形车衣品牌有哪些
  • 详细介绍:【2025年最新】国内主流AI生成PPT工具全面评测与选购指南
  • 一键部署!京东云上线Clawdbot云服务!
  • 本土王者 vs 全球巨头:测硫仪市场三大领军企业优势对比
  • 2026Q1刀具厂家推荐排行榜:CBN刀片、陶瓷刀片、三刃钻、小微内冷深孔钻及钻头智能钝化机
  • 2025年虹口服务好的宠物医生哪家好,宠物神经外科/宠物骨科/宠物体检/异宠医院/宠物绝育/狗狗绝育,宠物医生专家推荐
  • 人工智能备考——大体题型讲解+1.1.1-1.1.5固定搭配总结 - 详解
  • 偶极子网格法计算升力面非定常气动力的MATLAB实现
  • 只有5%的运营人看懂了:从“死积分”到“数字资产”,36期AI分红背后的博弈论