有时我需要在我的其中一台远程电脑(用作媒体中心的小型 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 将在DISPLAY
10 处创建一个不可见的 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