【我的环境】
mac:
ubutun:
Ubuntu 16.04.5 LTS \n \l
4.15.0-36-generic
如何在Mac上面直接显示Ubutun服务器上的图形或视频?虽然是个小技巧,但对我来说确帮助很大。因为目前主要在做机器视觉方面的应用,模型的训练都在GPU服务器上。在调试代码的过程中,直接在Mac终端调出图形窗口显示服务器上图形极大的便捷了调试过程。只要完成下面几上简单的步骤就可以了:
Step 1:
Mac上安装XQuartz,这个直接从官网:https://www.xquartz.org/下载安装即可。XQuartz是一个开源的解决方案,用于实现在Mac OS X下运行X.org窗口管理系统。
Step 2:
在Ubutun服务器上打开X11转发功能,编辑/etc/ssh/sshd_config(ssh的服务端配置文件,注意区别于/etc/ssh/ssh_config)。
然后重启ssh服务吧:
/etc/init.d/ssh restart
Step 3:
配置mac上的ssh也开启转发功能,编辑/private/etc/ssh/ssh_config(注意是ssh_config,这是ssh的客户端配置)。贴出我的非注释部分的配置吧。
Host *
SendEnv LANG LC_*
ForwardX11 yes
Host *
XAuthLocation /opt/X11/bin/xauth
Step 4:
打开XQuartz,打开mac terminal。
ssh -X {用户名}@{远程端}
完成以上几步按理说可以正常显示Ubutun上的图形或视频了,咯:
【附-可能的错误】
错误1:
在ubuntu上运行图片查看器,执行eog命令提示如下错误。
~$ eog
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused
(eog:16919): Gtk-WARNING **: cannot open display: localhost:10.0
我寻思苦久,通过编辑Mac上用户目录下的.ssh/config文件,将文件修改成如下:
Host *
ControlMaster auto
#ControlPath ~/.ssh/cm_socket/%r@%h:%p
ControlPersist 2h
ConnectTimeout 50
StrictHostKeyChecking no
ServerAliveInterval 10
ForwardX11Trusted yes
- ControlPersist为长连接,打开之后即使关闭了所有relay的ssh连接,一段时间内也能无需密码重新连接。
- ControlMaster配合ControlPath一起使用,当打开了一个relay的ssh连接之后,再次打开无需重复输入密码,但是关闭所有连接后,再次连接relay仍需输入密码。
错误2:
注意Ubutun上用户主目录下.Xauthority文件的属主和属组,我之前搞了一段时间没有成功就是因为.Xauthority属主不知道为什么变成了root root,而非我自己的账户,改了之后就成功了。