如何从SSH启动X应用程序
我试图在谷歌搜索这个主题,但没有任何重大结果。
我需要从终端启动一些GUI应用程序,但我不在乎这个应用程序向我展示了什么。 另外,我需要在不同的会话中启动此应用程序的几个实例。 它与一些GUI自动化测试相关联,所以我知道我想要什么,我正在寻找答案:)。
我认为适当的步骤应该是:
- 初始化新的X窗口会话
- 获取我的新会话ID
- 将其导出到env变量(导出显示:13.0)
- 运行我的应用程序
但我第一步陷入困境。 这里有人有类似的问题吗?
—编辑:1)我不关心GUI输出 – 我只需要我的应用程序中的stdout和stderr。 – 这就是为什么这个问题不重复 – 知道谷歌好:)。 我不想将输出重定向到我自己的GUI。
如果您不关心应用程序正在执行的操作,可以使用xvfb为其提供“虚拟”x服务器:
Xvfb提供的X服务器可以在没有显示硬件且没有物理输入设备的机器上运行。 它使用虚拟内存模拟哑帧缓冲。 此服务器的主要用途是用于服务器测试,但已发现其他新用途,包括针对exception深度和屏幕配置测试客户端,使用Xvfb作为后台渲染引擎进行批处理,负载测试,作为辅助将X服务器移植到一个新平台,并提供一种不引人注目的方式来运行不需要X服务器但仍然坚持使用X服务器的应用程序。
安装后,您可以启动它:
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
它将在后台运行,然后您启动您的客户:
DISPLAY=:10 your-client
一个简短的命令:
ssh -X @ gedit &
来自man ssh
-X Enables X11 forwarding. This can also be specified on a per-host basis in a configuration file. X11 forwarding should be enabled with caution. Users with the ability to bypass file permissions on the remote host (for the user's X authorization database) can access the local X11 display through the forwarded connection. An attacker may then be able to perform activities such as keystroke monitoring.
-
检查服务器端的
/etc/ssh/sshd_config
:sudo nano /etc/ssh/sshd_config
对于以下行:
X11Forwarding yes X11UseLocalhost no
如果您进行了更改,请重新启动ssh srever:
sudo service ssh restart
-
检查客户端上的
/etc/ssh/ssh_config
:sudo nano /etc/ssh/ssh_config
对于下面的行
ForwardX11 yes ForwardX11Trusted yes
您只需要在ssh会话中运行export DISPLAY =:id#,程序运行将在远程显示器上运行。 一个简单的例子:
maythux@maythuxPC:~$ ssh testSSH@myServer maythux@maythuxPC:~$ export DISPLAY=:0 maythux@maythuxPC:~$ gedit
现在gedit
将在名为testSSH display的用户上运行
您可以将这一切缩短为单个命令:
ssh testSSH@myServer "DISPLAY=:0 nohup gedit"