使用ssh远程连接运行图形界面程序
我们现在连接服务器上的 linux 进行远程开发时一般都使用 ssh 协议 : ssh user@ip -p port
,而 ssh 本身不支持图形界面,所以过去我们都是使用 vim 这类命令行编辑器进行 coding 的。虽然现在也因为效率的缘故而继续使用 vim ,但是如果可以像 windows 的远程连接一样使用服务器,肯定能给我们提供很多便利。
ssh 协议本身不支持图像处理,不过现在可以使用 x11 over ssh 来进行图形化的远程连接:
要实现这些要做三件事:
- 配置服务器上的 linux;
- 在 windows 上安装 X Window 服务器软件;
- 使用支持 X11 over ssh 的终端工具;
1. 配置 Linux
我使用的 linux 发行版是 ubuntu 14.04,配置 linux 上的 ssh 服务器配置, 即修改 /etc/ssh/ssh_config
,找到下面几个选项并设置为 yes
:
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
注意,修改配置需要使用 root 权限,修改完之后,重启 ssh 服务:
sudo /etc/init.d/ssh restart
2. 安装 X Window 服务器软件
在 windows 上我安装的 X Window 服务器软件是 Xming ,可以从[官网][http://www.straightrunning.com/XmingNotes/]下载,然后安装、运行即可。
3. 登录使用
最后,要使用支持 x11 over ssh 的终端工具,推荐使用 putty 和 Tera Term ,两者都支持在 X11 over ssh。以 putty 为例,在新建 ssh 链接时进入 connection->SSH->X11
页面,勾选 Enable X11 Forwarding
即可:
4. 总结
在本地显示服务器上的程序原理很简单,就是在本地X服务器显示远程X应用程序。 X Window 显示系统本身就分为两部分:server 和 client 两部分,前者负责图形渲染,后者负责生成图形,如果没有 server 则运行 GUI 程序时会提示无法显示:
(gedit:12103): Gtk-WARNING **: cannot open display:
而 Windows 本身并不支持 X Window Server ,所以我们运行服务器上的图形程序会失败,但是如果我们在 Windows 上安装了 X Window 服务器软件(Xming)以后,远程 linux 上的程序就可以吧绘图命令发给本地的 Xming ,由它来绘制图形界面,而终端工具的作用就是将 X11 相关的内容转发给 Xming ,这样一来 X Window 的 server 和 client 又成对出现了,自然就可以显示图形程序了。