CentOS在SSH中运行GUI图形界面程序

最近需要在CentOS中运行FreeRapid,是一个图形界面的网盘下载器。

一般情况来说,设置好JAVA_HOME、PATH等系统环境变量后,运行以下命令即可:

java -jar frd.jar > /dev/null 2>&1 &

但我的CentOS是无桌面环境的服务器系统,那怎么配置运行呢?步骤如下。

首先,打开/etc/ssh/sshd_config,修改:

X11Forwarding yes
X11UseLocalhost yes

然后重启sshd:

service sshd restart

重新登入ssh,若出现“WARNING! The remote SSH server rejected X11 forwarding request.”,则需要安装以下组件:

yum install xorg-x11-xauth xterm

若运行Java程序时出现“No X11 DISPLAY variable was set, but this program performed an operation which requires it.”,则:

export DISPLAY=localhost:10.0

localhost:10.0只是一个常用的例子,具体要根据用户本机的X11 server来设定;如果用Xmanager,在SSH的属性设置的Tunneling中forward到Xmanager了,登录SSH会自动设置好这个系统环境变量的。

若出现“libXtst.so.6: cannot open shared object file: No such file or directory”,则安装必要组件:

yum install libXi libXp libXtst

还有个问题,SSH中用screen是很方便的,但是screen中运行X11图形界面程序就很麻烦了,解决方案有以下几个:

1、用proxy-display这个小脚本,不过兼容性有点问题。https://blog.nelhage.com/2010/05/using-x-forwarding-with-screen/

2、用xpra,号称是“X窗口环境中的screen”,相关网址是http://xpra.org

3、不用X11转发,改用VNC进行远程图形界面传输,这是个很好的方案。还可以弥补X11 forwarding的性能卡顿问题。这个解决方案我会整理另一篇文章,参见《CentOS使用VNC查看X11图形界面窗口》:。

3 comments

  1. 余阔海 says:

    你好,服务器上有的用户能正常使用图形界面,有的则出现Exception in thread "main" java.awt.HeadlessException:
    No X11 DISPLAY variable was set, but this program performed an operation which requires it.
    at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
    at java.awt.Window.(Window.java:536)
    at java.awt.Frame.(Frame.java:420)
    at java.awt.Frame.(Frame.java:385)
    at javax.swing.JFrame.(JFrame.java:189)
    at uk.ac.babraham.FastQC.FastQCApplication.(FastQCApplication.java:63)
    at uk.ac.babraham.FastQC.FastQCApplication.main(FastQCApplication.java:332)

    也尝试过添加export DISPLAY=localhost:10.0,但仍然报类似的错误

Leave a comment