VSCode Remote SSH运行Python文件X11窗口不显示问题如何排查
本地端(Windows)排查项
- 必须先安装并启动Windows端X Server程序,常用工具为VcXsrv,启动时需勾选禁用访问控制,同时开启允许来自网络的连接选项,还要在系统防火墙中放行VcXsrv的入站规则,避免X11转发流量被拦截。
- 检查VSCode Remote-SSH扩展配置:打开VSCode设置页,搜索
Remote.SSH: Enable X11 Forwarding,确认该选项已开启;如果本地X Server端口有修改,可额外配置Remote.SSH: X11 Display为localhost:0.0(默认值即可适配绝大多数场景)。 - 如需在本地终端提前验证,可在PowerShell执行
echo $env:DISPLAY,确认输出为localhost:0.0类的有效值。
服务端(Ubuntu VPS)排查项
- 先安装X11转发相关依赖,执行命令:
sudo apt update && sudo apt install -y xauth x11-apps libx11-dev,运行tkinter相关Python代码的话还要额外安装python3-tk包。 - 检查SSH服务配置,编辑
/etc/ssh/sshd_config文件,确认以下参数未被注释且配置正确:X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
修改完成后重启SSH服务生效:sudo systemctl restart sshd - 远程连接建立后,在VSCode远程终端执行
echo $DISPLAY,正常输出应为localhost:10.0类结果,如果输出为空,可手动执行export DISPLAY=localhost:10.0临时生效,再运行xeyes测试是否能弹出窗口。 - 如果使用root用户运行程序,需要将普通用户的X11授权凭证同步到root账号下,执行命令:
xauth list | grep unix | head -n 1 | sudo xargs xauth add,避免root账号因权限问题无法调用X11转发。
通用验证流程
先跳过VSCode,直接在本地命令行执行带X11转发参数的SSH连接命令:ssh -X 你的远程用户名@VPS公网IP,连接后直接运行xeyes,如果能正常弹出窗口说明X11链路正常,问题出在VSCode配置侧,重启VSCode或者重装Remote-SSH扩展即可修复;如果命令行连接也无法弹出窗口,再按上述本地、服务端排查项逐一核对即可。
内容的提问来源于stack exchange,提问作者skorphil
相关产品推荐
相关产品推荐

