今天突发奇想想要将以前的一个项目做的软件优化一下, 然后把项目clone的mac上发现是需要gpu的,于是我又将项目upload到了我自己的服务器上,可是我一直是ssh去远程服务器的,我的这个软件涉及PyQt5的部分,没办法直接显示,于是了解了使用SSh的X11转发功能,实现了可以在远程服务器执行涉及GUI的脚本,以下是一些可能遇到的问题。
实现细节
-
首先我在Mac上选择的软件是 XQuartz ,直接用包管理器安装即可
brew install --cask xquartz
,注意这里安装完要重启电脑才行,brew下载完并没有这个提示。 -
需要检查服务器上的/etc/ssh/sshd_config里面的这三行没有被注释掉:
# 1. 确保 X11Forwarding 为 yes X11Forwarding yes # 2. 确保这一行没有被注释掉 X11DisplayOffset 10 # 3. 确保这一行是 yes (通常是默认值,但检查一下) X11UseLocalhost yes
-
之后用
ssh -Y your_username@server_ip
来连接服务器,正常情况下执行echo $DISPLAY
是能够显示localhost:10.0
的,我一开始显示为空,于是我检查了sshd_config
,并且使用ssh -v -Y your_username@server_ip
来查看更详细的信息,DEBUG信息显示debug1: X11 forwarding requested but DISPLAY not set
,最后重启了电脑就正常设置了。 -
我总共在服务器上安装了这些库:
sudo apt update sudo apt install -y libgl1-mesa-glx libgl1-mesa-dri sudo apt install -y libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libxcb-shape0
之后就能正常在我的Mac上显示了,有一些我做的动画显示的时候会比较卡而且会有很多不正常的背景色,不过这都不太重要,能够大概正常显示就已经够用了。