通过SSH使用X11转发显示gnuplot图形遇问题求助
解决Windows 10通过SSH X11转发查看Linux服务器gnuplot图形的问题
1. 确保SSH连接时开启X11转发
- 用PuTTY的话:打开Connection -> SSH -> X11,勾选「Enable X11 forwarding」,X display location填
:0或者留空让程序自动识别 - 用OpenSSH命令行的话:连接时必须加
-X参数(普通场景够用),命令示例:ssh -X your_username@server_ip,不要先手动设置DISPLAY变量,开启-X后SSH会自动配置
2. 检查Linux服务器端的SSH配置
需要修改sshd_config文件(需sudo权限):
- 打开文件:
sudo nano /etc/ssh/sshd_config - 确保以下配置项存在且未被注释:
X11Forwarding yes X11DisplayOffset 10 X11UseLocalhost yes - 保存退出后重启sshd服务:
- Debian/Ubuntu:
sudo systemctl restart sshd - CentOS/RHEL:
sudo service sshd restart
- Debian/Ubuntu:
3. 正确启动VcXsrv
启动VcXsrv时,在「Extra settings」步骤,一定要勾选「Disable access control」(这是新手最容易忽略的点,不勾的话Linux端的X请求会被拒绝),其他默认设置即可(比如选「Multiple windows」,「Start no client」)
4. 不要乱改DISPLAY变量
- 用
ssh -X连接后,服务器端会自动设置DISPLAY变量,执行echo $DISPLAY可以查看,正常值类似localhost:10.0(因为X11DisplayOffset设为10) - 手动执行
export DISPLAY=localhost:0反而会导致冲突,直接删掉这个操作
5. 测试X转发是否正常
先装个简单的X程序验证:
- Debian/Ubuntu:
sudo apt install x11-apps - CentOS/RHEL:
sudo yum install xorg-x11-apps
执行xeyes,如果VcXsrv里弹出跟随鼠标的眼睛窗口,说明转发正常,再运行gnuplot就能显示图形了
如果还是有问题,检查VcXsrv是否在运行,Windows防火墙有没有阻止VcXsrv的端口(默认是6000+DISPLAY号,比如:0对应6000端口)
内容的提问来源于stack exchange,提问作者Miles Johnson
相关产品推荐
相关产品推荐

