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

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

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

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

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

谢谢!

答案1

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

oli@bert:~$ ssh tim
oli@tim:~$ export DISPLAY=:0
oli@tim:~$ firefox

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

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

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

ssh tim "DISPLAY=:0 nohup firefox"

答案2

取决于你想在哪里看到应用程序显示

在本地 PC 上显示应用程序

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

ssh -Y ...
firefox

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

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

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

ssh A@...
DISPLAY=:0 nohup firefox

不显示应用程序

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

sudo apt install xvfb
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
DISPLAY=:10 firefox

答案3

一个应该与 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

答案4

假设你想跑gnome 磁盘

您需要 2 个 ssh 会话。一个用于运行软件(在本例中为 gnome-disks)。在第二个会话中,您可以执行任何您想做的事情。

在第一个会话中执行以下命令:

    export DISPLAY=:0
    gnome-disks

相关内容