实验室有两台强劲的Linux服务器用来做研究。之前我一直都是用ssh登到服务器上去码代码,反应速度很快,感觉很不错。但是因为在做机器视觉,难免需要看远程的图片。命令行虽然快,总不能每次都把图片拷贝到本地再看,有时候需要可视化中间结果,ssh也行不通。
当本地机器是Linux系统的时候比较好办。可以用ssh加X forwarding的方法。在本地开一个X,然后把远程服务器的X指令通过ssh转发到本地的X,码代码没有什么延迟,感觉还是很不错的。
sudo X :11 vt11 2>&1 >/dev/null &
这样可以在本地新开一个X,Ubuntu下用Ctrl+Alt+F11可以切到第11个虚拟终端
回到之前的终端,开ssh和xterm
xterm -display :11 -e ssh -X server-host &
然后可以切换到第11个虚拟终端来使用远程Linux服务器上的X了。
这样虽然好,但是要求本地机器上有安装X。在Windows和MacOS下虽然有解决方法,但是比较麻烦。
用VNC的话就没有这个问题,毕竟VNC的客户端是很容易找的。
当然需要先ssh登录到Linux服务器上安装vncserver
sudo apt-get install vnc4server
然后启动vncserver
vncserver
这样就搞定了。
在本地的Mac下可以用自带的Screen Sharing App或者著名的Chicken of the VNC连接到server-host:5901来查看和控制远程Linux桌面。
在服务器上启动了vncserver之后,可以通过修改
~/.vnc/xstartup
这个文件,来指定远程的X启动之后要执行什么命令。我喜欢用openbox,所以我的xstartup文件就是这样子
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
openbox-session&
#x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#x-window-manager &
另外,在启动vncserver的时候可以使用参数修改远程桌面的分辨率
vncserver -geometry 1280x1024
这么一来就可以在命令行下写代码,同时再开一个vnc窗口看图,感觉不错!
这篇文章有列举一些远程到Linux服务器上的其它解决方法,如果有服务器的root用户权限的话,freeNX貌似也是一个不错的选项。