在 SSH 会话之外运行 GUI

在 SSH 会话之外运行 GUI

我正在尝试通过 SSH 运行 GUI 应用程序(如果它不是 GUI...),但我希望它将应用程序移植到本机 X 会话而不是 SSH 会话。这样,当我关闭 SSH 会话时,程序将继续运行。我使用已经登录到该框的同一用户登录该框,并且我拥有 root 权限。框上的 x 会话是 UserA,我以 userA 的身份通过 SSH 登录。操作系统是 Ubuntu 13.04。

有没有办法轻松地做到这一点?过去的所有尝试都试图显示 X 窗口客户端,当我关闭 SSH 时,程序停止运行。我也想过进入并编辑会话的启动脚本,然后简单地重新启动机器以使其运行我想要的程序,但它有几个服务器程序,我不知道如何访问(它们是基于命令行的)以正确地远程关闭它们。如果我以其他方式关闭机器,它可能会损坏服务器软件。

答案1

如果您可以从运行 X 客户端应用程序的服务器直接连接到运行 X 服务器的本地计算机,则放弃 SSH 会话。

通过 SSH 连接,然后:

export DISPLAY=your.computer.ip:0.0

这将告诉 X 客户端它应该连接到第一个 X 服务器并在 上找到第一个 X 显示器 ( 0.0) your.computer.ip。只需正常启动 X 客户端应用程序,它就会直接连接到您的 X 服务器,然后您就可以关闭 SSH 会话了。

您需要确保直接的可以从客户端运行的任何位置连接到您的本地系统,包括任何端口转发和路由规则。您可能还必须配置本地 X 服务器以接受来自网络的连接(我不记得默认情况下是否仅本地主机)。您将需要完全禁用 X 服务器上的所有安全功能(除非您位于可以信任所有计算机的私有局域网中,否则不要这样做):

xhost +

或者学习如何正确配置和设置客户端之间的 X 身份验证。

老实说,这正是您通过 SSH 正常执行操作时发生的情况 - 只不过 SSH 隧道用于转发连接,因此您不必处理端口转发,也不必更改 X 服务器配置以在网络上侦听传入连接(潜在的安全风险),SSH 将自动为您的用户配置所有 X 安全性,以便应用程序不会出现连接问题。即使通过 SSH 运行,应用程序也在本机 X 会话,SSH 只是被用作代理。

您没有列出放弃 SSH 的原因,但除非这是老板下达的无法更改的硬性要求,否则我强烈建议重新考虑将其用于 X 会话转发。直接连接不会给您带来任何特别的好处,但 SSH 可以简化许多痛点,因为它的设计初衷就是为了实现这一点。

相关内容