通过 SSH 登录时,如何在远程服务器上运行图形应用程序?

Gau*_*wal 14 ssh xorg

我正在尝试gedit从 Windows 上的 SSH 终端运行,连接到运行 Ubuntu 12.04 服务器的 Amazon EC2 实例,但出现此错误:

Cannot open display:
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

con*_*use 18

所以你是通过ssh从你的家用电脑(我们称之为你的机器)连接到服务器(我们称之为服务器)?您想通过您的机器在服务器上启动一个带有图形窗口的程序吗?如果那是正确的,那么请继续阅读。

让我们调用程序来启动,gedit但过程对所有人都是一样的。根据您希望看到图形窗口的位置,跳到正确的标题。

机器屏幕上的窗口

如果你想在远程机器上查看和使用 gedit 的窗口,但在服务器上启动,你会希望你的 shell 会话看起来像这样:

user@remote-machine:~$ ssh -X user@server
Last login: Tue Aug 14 13:47:04 2012 from clientXX
*******************************************************************************
M O T D (Message Of The Day)
*******************************************************************************
user@server:~$ gedit .bash_aliases 

** (gedit:7851): WARNING **: Could not load theme icon gtk-home: Icon 'gtk-home' not present in theme

(gedit:7851): Gtk-WARNING **: Attempting to store changes 
Run Code Online (Sandbox Code Playgroud)

不要介意这些警告,它们是正常的——gedit 窗口会在远程机器的屏幕上弹出,就像在服务器上一样。诀窍是使用“-X”选项,因为ssh -X它可以启用 X 隧道并DISPLAY正确设置变量。

这假设您使用的是支持 X11 的 SSH 客户端,并且您的服务器运行着 X-server(一些不需要 GUI 的不运行 X-server)。特别是在 Windows 上,这可能是一个问题,因为大多数 Windows 终端程序没有 X。正如izx所说,MobaXTerm是具有 X-Server 的 Windows 的众多 SSH 客户端之一。

但是,对于缺少 X11 的服务器,您必须安装它。

在服务器的屏幕上

您还可以通过调用 gedit 在您的服务器屏幕上启动一个实例,如下所示:

ssh user@server
DISPLAY=:0.0 gedit
Run Code Online (Sandbox Code Playgroud)

您必须替换正确的值,而不是:0.0在正确的 X 屏幕上获取它(仅当多个屏幕连接到您的服务器或者它的配置有些特殊时才重要)。

这里最常见的情况是,如果服务器缺少 X11-Server,但它没有连接显示器或没有图形用户界面,并且您不会阅读此内容:D。

一点理论

我不是这方面的专家,但我认为它的工作方式是,每个物理屏幕,即连接到单个计算机的每个显示器都以0.0, 1.0, 2.0,...

该编号由 X-Window-System aka X11 分配。这是一个提供 Unity、Gnome、KDE ​​等可以构建的网络和基本图形界面的层。

您可以通过for x in /tmp/.X11-unix/X*; do echo ":${x##*X}"; done在相关机器上运行来查看给定机器有多少显示器以及正在使用的数字。* 然后,每台配置为使其屏幕可用并运行 X 服务器的计算机都有一个主机名。通过将DISPLAY变量相应地设置为 ,您可以使用来自同一网络中任何机器的主机屏幕DISPLAY=hostname:0.0。如果您提供-X选项,Ssh 会以一种明智的方式为您执行此操作。

*注意:我想有比这个 for 循环更好的方法。

如果一切都失败了

使用 shell 文本编辑器。vivimnanoemacs是最常见的,并且至少会安装和运行其中之一。其中nano是最简单和最不言自明的。


ish*_*ish 14

由于您使用的是 Windows,您将需要一个 SSH 客户端,该客户端在 Windows 上运行本地 X 服务器,以便在您的屏幕上远程运行来自服务器的图形应用程序。

根据经验,我会推荐内置此功能的免费MobaXTerm。请下载并试一试:

在此处输入图片说明

如果您遇到任何错误,那是因为有时可能未设置最小服务器映像以允许X 转发到其中。遇到这种情况,请留言,我帮你解决;我已经使用许多运行 Ubuntu/Debian 的最小 VPS 完成了这项工作。