如何通过 SSH 在远程 Ubuntu 机器上启动 GUI 应用程序

如何通过 SSH 在远程 Ubuntu 机器上启动 GUI 应用程序

我可以登录远程 Ubuntu(Kubuntu 12.04)计算机。使用来自(如何通过 SSH 在远程 Linux PC 上启动 GUI 软件)登录后我尝试了以下操作:

user@Kub:~$ export DISPLAY=:0
user@Kub:~$ firefox
No protocol specified
No protocol specified
No protocol specified
No protocol specified
Error: cannot open display: :0

我期望获得与问题中所述相同的成功。不幸的是,如您所见,它对我来说不起作用。这台机器有 3 个显示器。这可能是问题所在吗?

有简单的解决办法吗?我也读过(https://unix.stackexchange.com/questions/10121/open-a-window-on-a-remote-x-display-why-cannot-open-display),但我不明白如何使用或应用该建议。它太复杂了。我很感激任何相对简单的解决方案。

我使用以下命令查看了正在运行的 GUI 进程(Kate):

# cat /proc/2857/environ | tr \\0 \\n | grep -E '^(DISPLAY|AUTHORITY)=' 
DISPLAY=:0

这让我更加困惑为什么它不起作用。

根据 Scott Goodgame 的建议(如下),我尝试这样做:

  1. 使用 SSH 上的 -X 和 -C 选项登录。
  2. 导出显示=:0
  3. 火狐浏览器

结果是:

$ No protocol specified
No protocol specified
No protocol specified
No protocol specified
Error: cannot open display: :0

答案1

启动图形程序的一个简单方法是像这样启动 ssh...ssh -X -C user@MyIp然后它将像平常一样启动你的 ssh 会话,但是你可以像这样启动 X 程序..firefox &这将在远程计算机上启动 Firefox,在你本地显示它,并返回到 ssh 提示符。

答案2

我在 Kubuntu 12.04 上。以下是如何远程启动 x11vnc 的示例。

首先运行命令ps wwwwaux | grep auth来查找 xauth cookie。结果将类似于以下内容:

root      1592  3.6  6.2 665544 1023456 tty7   Ss+  Jul14 288:35 /usr/bin/X :0 vt7 -br -nolisten tcp -auth /var/run/xauth/A:0-ABCDEF

感兴趣的部分位于该行的末尾:/var/run/xauth/A:0-ABCDEF
(其中 ABCDEF 是一个唯一的随机(?)字符串)

接下来将结果插入到此命令中:

sudo x11vnc -rfbport 5901 -rfbauth ~/.vnc/passwd -display :0 -shared -xauth /var/run/xauth/A\:0-ABCDEF

答案3

您需要 xauth 来允许导出显示并创建一个空的 Xauthority 文件。

apt-get install xauth
touch ~/.Xauthority

相关内容