ssh Forward X11 实现远程主机GUI在本地展示 (C/S X)

less than 1 minute read

背景

有些时候,有些程序可能需要依赖图形界面才能启动,例如安装Oracle时(其实oracle支持命令行安装),例如需要启动一个图形界面的浏览器如firefox。

作为服务端的系统,通常不会安装臃肿的图形界面。

那么如何在不安装图形界面的的情况下启动图形界面的?听起来很矛盾,但是实际上是可行的。

X Window System(常被简称为X11或X),是一套基于X display protocol的windowing system,X GUI环境的功能包括窗口的绘制、移动,以及与鼠标、键盘等输入设备的交互。

X采用C/S模型(这是关键):一个X server 和多个应用程序(client)通信。server接收client的请求绘制窗口,并将来自鼠标、键盘等设备的输入传递给client。

因此 X server和client可以位于同一计算机上,例如在Linux主机上使用KDE等桌面环境就是这种模式。X server也可以通过同构网络、异构网络或Internet与client通信。

X server与client之间的通信是不加密的,这个问题可以通过SSH解决。SSH是Secure Shell的简称,SSH可以看作是通信被加密压缩版的telnet。

需要用到SSH的forwarding功能,当X server与client所在计算机都支持SSH协议时,X server与client之间不安全的TCP/IP连接可以转送到(forwarding)二者之间建立的SSH连接上。

了解原理后,我们就可以在本地自建X服务,然后服务器作为X client,把绘图的请求发给本地的X server。 这样就实现了本地显示图像的目的。

例子, 以本地为Windows为例,使用ssh连接到服务器, 把服务器的X请求转发到本地的 X server。

简单的几个步骤即可
1. 配置服务器的sshd,重启服务

# vi /etc/ssh/sshd_config  
X11Forwarding yes  
X11DisplayOffset 10  
X11UseLocalhost yes  
  
# service sshd restart  

2. 在windows主机安装Xming, 启动X server

windows下的X server可以通过Xming软件来构建。

https://sourceforge.net/projects/xming/

1

2

3

4

5

3. 在windows主机安装securecrt或putty

4. 在windows主机配置securecrt或者putty,配置对应会话的转发X11,并重新连接会话

6

7

5. 在securecrt或putty命令行启动GUI命令

开启securecrt FORWARDX11后,会自动设置DISPLAY环境变量.    
#echo $DISPLAY  
localhost:10.0  
  
# firefox    

8

参考

https://sourceforge.net/projects/xming/

http://www.cnblogs.com/qcly/p/3219902.html

Flag Counter

digoal’s 大量PostgreSQL文章入口