news 2026/2/1 16:44:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
在 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图形调试等带界面的程序。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/31 7:15:41

一个退休程序员,用AI写了个AI叫Clawd,然后带火了Mac Mini

简单说,ClawdBot是一个可以跑在你自己电脑上的AI助手。但和ChatGPT、Claude这些不一样的是,它不只是跟你聊天,它能直接操作你的电脑。这两天刷Twitter,满屏都是一个叫ClawdBot的东西。一开始我还以为是Anthropic出的什么新产品&am…

作者头像 李华
网站建设 2026/1/29 13:59:53

毕业设计项目 基于单片机的太阳追光系统(源码+硬件+论文)

文章目录 0 前言1 课题介绍光线追踪的原理系统架构 2 硬件设计3 核心软件设计4 实现效果5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断…

作者头像 李华
网站建设 2026/1/31 3:17:22

2026软著代办平台推荐:5款高效工具让你30分钟搞定申请材料

2026软著代办平台推荐:5款高效工具让你30分钟搞定申请材料 上周帮朋友公司申请软著,光准备材料就花了两天。源代码60页、说明书20多页,格式还老出问题,提交后被打回来两次。后来用了语流软著宝,30分钟出稿&#xff0c…

作者头像 李华
网站建设 2026/1/29 13:51:22

4招搞定DeepSeek写的论文AI率太高问题

用DeepSeek写了一篇8000字的论文,查重前先测了下AI率。 91%。 整篇论文几乎被判定是AI写的。当时离提交只剩三天,我慌得不行。 后来我摸索出一套方法,把AI率从91%降到了7%,顺利过了检测。这篇文章把我的经验总结成4招&#xff…

作者头像 李华