Pages

2016年1月11日星期一

使用SSH的X11 Forwarding遠程執行GUI程序


使用SSH的X11 Forwarding遠程執行GUI程序


1. 術語簡介
Linux下執行一個GUI程序通常需要兩個部分來協調完成,X server與X client。X server是專門負責顯示用戶界面的,它管理你的顯示器,鍵盤以及鼠標,通常你看到的桌面系統即是由它在背後驅動的,X client則負責程序的邏輯,如果需要使用用戶界面,則通過給X server發送請求來完成。通常情況下,X server與X client都運行在同一台機器上,例如我們在Ubuntu上運行任何GUI程序都是這樣的。但因為X系統當初設計成是通過socket在X server與X client之間通信的,所以它們也可以運行在不同的機器上。
X11 Forwarding就提供了一個方法,在遠程機器上執行X client程序(如Eclipse),但是在本地機器上顯示(即運行X server)。
2. 遠程CentOS主機配置
你需要在你的遠程CentOS主機上配置OpenSSH服務,啟用X11 Forwarding。在OpenSSH的配置文件中(/etc/ssh/sshd_config),打開如下兩項:
AllowTcpForwarding yes
X11Forwarding yes
CentOS 5.x系列這兩項是默認打開的。如果沒有的話,打開這兩個選項,然後重啟sshd服務。
注意:
  • 使用X11 Forwarding並不需要在遠程主機上運行桌面系統,即執行startx。
  • 使用X11 Forwarding需要安裝rpm包xorg-x11-xauth,如果你在安裝CentOS系統時,選擇了安裝X Window System,那這個包是默認安裝的。
3. 本地Ubuntu主機配置
在Ubuntu桌面下,已經有X server在運行了,所以不需要任何配置,只需打開終端,然後執行如下ssh命令登錄遠程CentOS:
ubuntu:~# ssh -X user@centos
登錄進以後直接運行eclipse就可以了。
centos:~# eclipse