如何从 SSH 启动 X 应用程序

如何从 SSH 启动 X 应用程序

我尝试在谷歌中搜索该主题,但没有任何显著结果。

我需要从终端启动一些 GUI 应用程序,但我不在乎这个应用程序向我显示什么。此外,我需要在不同的会话中启动此应用程序的几个实例。它与一些 GUI 自动化测试相连,所以我知道我想要什么,我正在寻找答案 :)。

我认为正确的步骤应该是:

  1. 初始化新的 X 窗口会话
  2. 获取我的新会话 ID
  3. 将其导出到环境变量(导出 DISPLAY:13.0)
  4. 运行我的应用程序

但是我在第一步就卡住了。这里有人遇到过类似的问题吗?

--- 编辑:1) 我不关心 GUI 输出 - 我只需要应用程序的 stdout 和 stderr。- 这就是为什么这个问题不是重复的 - 了解谷歌 :)。我不想将输出重定向到我自己的 GUI。

答案1

如果你不关心应用程序正在做什么,你可以用 xvfb 为其提供一个“虚拟”x 服务器:

Xvfb 提供了一个 X 服务器,可以在没有显示硬件和物理输入设备的机器上运行。它使用虚拟内存模拟哑帧缓冲区。该服务器的主要用途是服务器测试,但也发现了其他新用途,包括针对不寻常的深度和屏幕配置测试客户端、使用 Xvfb 作为后台渲染引擎进行批处理、负载测试、作为将 X 服务器移植到新平台的辅助手段,以及提供一种不引人注目的方式来运行那些实际上不需要 X 服务器但仍然坚持拥有一个的应用程序。

安装后,你可以使用以下命令启动它:

sudo Xvfb :10 -ac -screen 0 1024x768x24 &

它将在后台运行,然后您使用以下命令启动客户端:

DISPLAY=:10 your-client

答案2

简短的命令:

ssh -X <username>@<host> 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.

  1. /etc/ssh/sshd_config在服务器端检查:

    sudo nano /etc/ssh/sshd_config
    

    对于以下几行:

    X11Forwarding yes
    X11UseLocalhost no
    

    如果您进行了更改,请重新启动 ssh 服务器:

    sudo service ssh restart
    
  2. /etc/ssh/ssh_config在客户端检查:

    sudo nano /etc/ssh/ssh_config
    

    对于下面的几行

    ForwardX11 yes
    ForwardX11Trusted yes
    

答案3

您只需在 ssh 会话中运行 export DISPLAY=:id#,程序就会在远程显示器上运行。一个简单的例子:

maythux@maythuxPC:~$ ssh testSSH@myServer
maythux@maythuxPC:~$ export DISPLAY=:0
maythux@maythuxPC:~$ gedit

现在gedit将在名为 testSSH 的用户上运行显示

您可以将其全部缩短为单个命令:

ssh testSSH@myServer "DISPLAY=:0 nohup gedit"

相关内容