有时我需要在我的一台远程 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)
nde*_*mou 10
取决于您希望看到应用程序显示的位置
您首先使用附加-Y
选项通过 ssh 连接到远程计算机并运行应用程序(例如 firefox):
ssh -Y ...
firefox
Run Code Online (Sandbox Code Playgroud)
如果-Y
不起作用,请检查远程 PC 上的 sshd 配置(请参阅 Denis Lukinykh 的回答)。另一个类似的选项是-X
. 谷歌的差异。
您需要在远程 PC 上使用用户 A 登录并保持会话打开。之后,您可以使用相同的用户 A ssh 并启动应用程序(例如 firefox),如下所示:
ssh A@...
DISPLAY=:0 nohup firefox
Run Code Online (Sandbox Code Playgroud)
您需要安装并启动 xvfb。xvfb 将在DISPLAY
10 点创建一个不可见的 X 会话。然后您启动您的应用程序,将其输出定向到DISPLAY
:
sudo apt install xvfb
sudo Xvfb :10 -ac -screen 0 1024x768x24 &
DISPLAY=:10 firefox
Run Code Online (Sandbox Code Playgroud)
一个也应该与 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)
归档时间: |
|
查看次数: |
344029 次 |
最近记录: |