本地连接远程服务器 GUI 图形界面

less than 1 minute read

Published:

最近在使用服务器编程时遇到了无法实时显示可视化界面的问题,最多只能做到将图片保存下来,在本地下载之后再打开,下面我们将介绍 windows 和 mac 如何实现连接远程服务器跑 python 代码实时返回可视化界面的操作,当然配置成功后不局限于 python 运行结果的可视化,包括一切 linux GUI 图形界面都能做到,具体原理主要要参考 X 协议,在这篇博客有适当提及。

服务器端配置

1、启用 X11 Forwarding

$ sudo vim /etc/ssh/sshd_config
# 修改文件如下
X11Forwarding yes
X11DisplayOffset 10

2、重启 sshd 服务

service ssh restart

mac 端配置

1、下载安装 XQuartz

2、启用 X11 Forwarding

$ sudo vim /private/etc/ssh/ssh_config
# 修改文件如下
ForwardX11 yes

3、打开 XQuartz 的终端

ssh -Y username@ip:port

windows 端配置

1、下载安装 MobaXterm

2、直接使用 MobaXterm 连接服务器即可,连接成功后有显示 X11-forwarding 标志

代码配置

1、使用上面带有 X 协议的终端连接服务器端输入以下命令获得 DISPLAY 值。

$ printenv grep DISPLAY
# 比如我输出的 DISPLAY 如下
localhost:13.0

2、配置代码的环境变量

第一种方法:在 pycharm 中配置

pycharm 菜单栏 -> Run -> Edit Configurations -> 选中我们运行的 configuration -> Environment variables

添加一个 DISPLAY 变量 DISPLAY=localhost:13.0

注意:如果已经有别的 Environment variables,可用 ; 进行隔开, ; 前后不需要空格。

第二种方法:在 python 代码中配置

import os
os.environ['DISPLAY'] = "localhost:13.0"

参考资料及致谢

在Mac上使用远程X11应用

mac如何ssh连接linux(ubuntu) GUI图形界面

远程显示(操作) 服务器 GUI 程序(图形化界面) (基于 X11 Forwarding + Centos + MobaXterm)

PyCharm使用远程Python解释器并用matplotlib绘图的方法