如何通过 SSH 在远程 Linux PC 上启动 GUI 软件

Rab*_*ben 132 ssh gui remote

有时我需要在我的一台远程 PC(用作媒体中心的小型 Xubuntu PC)上启动 XMBC 媒体播放器或其他 GUI 软件。

通常,我通过 SSH 在远程 PC 上启动 X11vnc 服务器,然后使用 Xvnc 客户端连接到 Xfce 桌面来执行此操作。

有没有办法通过 SSH 在远程 Linux PC 上启动 GUI 软件?

谢谢!

Oli*_*Oli 165

是的。您只需要export DISPLAY=:0在 ssh 会话中运行(或远程显示编号为的任何内容),运行的程序将在远程显示上运行。一个简单的例子:

oli@bert:~$ ssh tim
oli@tim:~$ export DISPLAY=:0
oli@tim:~$ firefox
Run Code Online (Sandbox Code Playgroud)

Firefox 现在正在tim的显示器上运行。

但是,当您关闭 ssh 会话时,大多数情况下远程应用程序将关闭。如果您想与 ssh 断开连接但让应用程序继续运行,您需要使用类似 screen(保持 ssh 会话在后台运行)或nohup, 或其他方法以特殊方式启动它。有关这方面的更多信息,最近有另一个问题

您可以将这一切缩短为一个命令,该命令将连接、导出内嵌显示并以在 ssh 会话结束后不会关闭它的方式启动应用程序:

ssh tim "DISPLAY=:0 nohup firefox"
Run Code Online (Sandbox Code Playgroud)

  • 有时您想做相反的事情并在本地运行 X 应用程序,只需使用 -Y 连接,然后运行您的应用程序`ssh -Y <remoteip>` (8认同)
  • @PyRulez 请注意第一行中的“或远程显示器的编号”。如果它不是第一个图形服务器,它可能是:1 或更高。运行“w”来查看谁登录了以及在哪里登录。这也会告诉你显示号码。 (2认同)
  • 我如何关闭它 (2认同)
  • `未设置显示` (2认同)

nde*_*mou 10

取决于您希望看到应用程序显示的位置

在本地 PC 上显示应用程序

您首先使用附加-Y选项通过 ssh 连接到远程计算机并运行应用程序(例如 firefox):

ssh -Y ...
firefox
Run Code Online (Sandbox Code Playgroud)

如果-Y不起作用,请检查远程 PC 上的 sshd 配置(请参阅 Denis Lukinykh 的回答)。另一个类似的选项是-X. 谷歌的差异。

在远程 PC 上的现有会话上显示应用程序

您需要在远程 PC 上使用用户 A 登录并保持会话打开。之后,您可以使用相同的用户 A ssh 并启动应用程序(例如 firefox),如下所示:

ssh A@...
DISPLAY=:0 nohup firefox
Run Code Online (Sandbox Code Playgroud)

无处显示应用程序

您需要安装并启动 xvfb。xvfb 将在DISPLAY10 点创建一个不可见的 X 会话。然后您启动您的应用程序,将其输出定向到DISPLAY

sudo apt install xvfb
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
DISPLAY=:10 firefox
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用包装 Xvfb 的 xvfb-run,如果您只想运行一个命令,它会很有用。 (2认同)

Mar*_*nas 6

一个也应该与 Wayland 会话一起使用的现代解决方案,设置现代会话中使用的所有环境变量(XDG_RUNTIME_DIR、GTK_MODULES、XDG_DATA_DIRS、XAUTHORITY、SESSION_MANAGER 等),将应用程序的控制台输出转发到日志,并在日志中运行它后台不会窃取您的 ssh shell 或在您关闭 ssh 会话时退出:

ssh tim 
export DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID/bus
systemd-run --user firefox
Run Code Online (Sandbox Code Playgroud)