macOS上使用x11转发运行Linux GUI软件——XQuartz
# 原因 这次要在mac上运行Linux GUI程序的原因还是蛮复杂的 我本来在学校有一台电脑吗,然后配置还不错,一直开着机,可以离线下载,开虚拟机用Linux,什么的都蛮方便的,而且很重要的是可以在寒假期间,可以远程到那台电脑上上知网,看看论文打打比赛都…
# 原因
这次要在mac上运行Linux GUI程序的原因还是蛮复杂的
我本来在学校有一台电脑吗,然后配置还不错,一直开着机,可以离线下载,开虚拟机用Linux,什么的都蛮方便的,而且很重要的是可以在寒假期间,可以远程到那台电脑上上知网,看看论文打打比赛都蛮方便的。15号回的家,一直用的都挺好的。
但是就很无语,学校校园网需要认证登陆,因为我从发15号到29号已经满了14天了吧,然后就被踢下来了,我的电脑就不能联网了,然后导致了我就不能远程到我的电脑来使用了。
学校早都放假了,老师教职工也都放假了,没有人能帮我联网了,这该怎么办呢,可是急死我了
但是我后来突然想到,虽然我不能远程到我的电脑了,但是学校里还有常年开着的服务器啊,而服务器和我的电脑都在一个内网内,那我岂不是可以先远程到服务器上,然后再使用服务器远程到我的电脑,然后使用RDP远程操作我的电脑登录网络?
虽然说电脑不能联网了,但是他获取的IPv4地址是不会变的,内网资源还是可以访问我的电脑的。
但是有一个很大的问题,只是我们实验室的服务器装的是Linux,然后Linux的GUI实在是不会用,向日葵安装的还是命令行版本,根本就不能远程到我的电脑,这该怎么办呢?
不过我之前使用xshell的时候,每次在xshell打开jupyterlab的时候,都会弹出很多对话框,问要不要使用xmanager转发x11请求?
我当时就很好奇,什么是x11请求呢,后来了解了一下,原来Linux上的GUI都是通过一个叫
X Window System
实现的,转发x11请求的意思就是可以将GUI界面转发到SSH客户端上,让它不只是SSH的cli界面,而是拥有了GUI界面。
后来搜索了一下,原来x11转发了以后,就像是微软的RDP Remote App一样,就是就像是客户端上原生的App一般,用起来感觉体验还是很不错的,(其实也有点像是Parallel Desktop
的融合模式)
然后了解了一下,Linux下虽然没有Microsoft官方的RDP客户端,但是也有很多可以用的第三方RDP客户端,可以帮助我连接到我的PC。
有这些Linux上可用的RDP Cliet:
- Remmina
- Gnome-connections
我搜了一下感觉还不错的就是这两个,特别是Remmina
,感觉用户界面比较友好,支持的协议也很多。
最重要的是他支持网络级别的身份验证,这个真的很重要,因为我根本不可能在电脑上关闭网络级别的身份验证。
所以我就需要在这台Linux服务器上使用x11转发,让我能够远程到我的电脑进行校园网认真登录。
我的环境
客户端
MacBook Air(M1, 2020)
macOS Sonoma 14.3(23D56)
服务端
Dell PowerEdge C4140
Ubuntu 20.04 LTS Desktop With Gnome Desktop
注意!!!
服务器是有Gnome桌面的,没有的话您可能要考虑去安装一个桌面环境。
另外似乎现在的GUI的兼容性对于X Server来说兼容性比较好,使用Wayland
作为桌面环境的,应该大概率是不能正常工作的
在macOS下使用x11转发运行Linux GUI App
安装x11客户端
macOS的自带的终端不支持x11请求,所以我们要下载一个软件,叫做XQuartz
,直接官网下载就行
这软件还挺不错的,支持Intel和Apple Silicon
安装直接一路下一步就行
安装完了还得去注销一下当前用户,记得保存好文件,关掉Apps
配置XQuartz
安装完了这个软件,应该会默认放在启动器里面的系统工具,找不到的可以去找一下或者使用聚焦搜索,打开它
打开这个软件,应该是一个终端,键入Command + ,
打开设置,在设置里打开这个选项:Allow connections from network clients
,应该是允许互联网上的连接请求吧,我也不懂
打开后就在XQuartz里面使用ssh连接你的服务器主机了
连接服务器主机
使用SSH连接主机,就和一般命令行链接一样,不过记得加一个-X
或者-Y
的参数,表示允许X11连接转发。
一般情况下是使用
-X
这个参数就够了,不过,似乎某些高级3D应用程序,比如Maya
,Blender
这种软件会无法正常运行,所以就使用-Y
这个参数来放宽安全政策。
你的命令可能是这样的:
1 | ssh -p <portNumber> -X username@serverip |
然后输入密码就行。连接上了就应该是和一般连接服务器一样的界面
然后在这里你就可以执行你的应用程序了
你可以执行一些小软件,来看看是否可以正常出现窗口,比如在命令行执行
xeyes
和xclock
,哈哈哈,挺好玩的
然后你就可以正常去执行你的GUI应用程序了,比如直接在命令行中键入remmina
,就可以看到熟悉的Linux GUI应用程序了!!!!!!!
起飞飞飞飞飞飞
这个体验还是挺不错的,在公网内网穿透下,延迟还是可以接受的,主要是至少已经是一个可用的状态了。
可能出现的问题
我这次完成X11转发还是挺顺利的,但是也可能会有一些意外发生,大家可以注意一下,那些常见错误什么的,比如
SSH配置文件
可能需要检查你的服务端的SSH配置文件查看是否已经打开了X11转发,具体位置在~/.ssh/config
或者/etc/ssh/ssh_config
里面,看看里面有没有一行ForwardX11 yes
允许X11转发
Windows相关的客户端
我的在家的主力机就是这台MacBook Air,所以Windows用的没那么多,不过Windows中应该也是需要类似安装一个软件,我了解到的有Xmanager(付费)
、Xming
、VcXsrv Windows X Server
什么的。
如果有朋友成功了,可以的话,多交流下哈
我是六六,是个小白,什么也不会,但是希望也能做一个自己看得起的人!