利用X11Forwarding远程输出Linux服务器GUI程序界面到本地显示。
很多情况下Linux服务器出于性能和效率等方面的考虑,没有安装图形化界面。因此,有时需要在服务器上运行有界面的程序时非常不方便,比如需要图形界面的安装程序。X11Forwarding机制能解决这个问题。(X11指的是X协议,第11个版本)
举例:例如我的客户端机器是Ubuntu,远程服务器是红帽系Linux。客户端能直接连接到服务器上的opc用户,但图形界面程序需要在oracle用户下执行,那么如何将oracle用户下执行的图形界面输出到我本地的Ubuntu机器?
首先,服务器端安装xauth,并配置sshd:
安装xauth:
# yum install xauth (如果提示其它依赖需要安装,则按提示安装即可)
# vi /etc/ssh/sshd_config (编辑sshd配置文件,确保如下选项的值类似以下):
X11Forwarding yes
X11UseLocalhost no
# systemctl restart sshd (重启sshd)
其次,客户端Ubuntu机器用ssh -X连接到服务器opc用户:
# ssh -i id_rsa -X opc@
最后,配置XAuth Cookie,并设置好DISPLAY参数的值:
[opc@customer-poc-ebsclone ~]$ xauth list $DISPLAY
customer-poc-ebsclone.regionalpublics.hysunhevcn.oraclevcn.com:10 MIT-MAGIC-COOKIE-1 06332873951d3e793cd0d9a35c7a2daf
[opc@customer-poc-ebsclone ~]$ echo $DISPLAY
192.168.3.22:10.0
切换到oracle用户 (sudo su - oracle)
- 增加 XAuth COOKIE (上面xauth list出来的值)
xauth add customer-poc-ebsclone.regionalpublics.hysunhevcn.oraclevcn.com:10 MIT-MAGIC-COOKIE-1 06332873951d3e793cd0d9a35c7a2daf
- 设置DISPLAY参数(上面echo $DISPLAY 出来的值)。
export DISPLAY=192.168.3.22:10.0
配置完毕,在服务器端oracle用户下运行一个图形界面程序,界面就输出到了本地Ubuntu客户机了。