Answers:
因此,您是通过ssh从家用PC(称为机器)连接到服务器(称为server)吗?您想通过机器在服务器上使用图形窗口启动程序吗?如果那是正确的,那么请继续阅读。
让我们调用程序启动,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
不用担心警告,它们是正常的-gedit窗口会像在服务器上一样弹出在远程计算机的屏幕上。诀窍是使用“ -X”选项,因为ssh -X其中启用了X隧道并DISPLAY正确设置了变量。
假设您使用的是支持X11的SSH客户端,并且您的服务器运行的是X服务器(某些不需要GUI的用户则不需要运行X服务器)。尤其是在Windows上,这可能是一个问题,因为大多数Windows终端程序都没有X。正如izx所述,MobaXTerm是许多具有X服务器的Windows SSH客户端之一。
但是,对于缺少X11的服务器,您必须安装它。
您还可以通过调用gedit在服务器的屏幕上启动实例,如下所示:
ssh user@server
DISPLAY=:0.0 gedit
您必须替换正确的值,而不是:0.0尽管要在正确的X屏幕上获取它(仅在将多个屏幕连接到服务器或它的配置有些特殊时才重要)。
如果服务器缺少X11服务器,但没有连接监视器或没有图形用户界面,则最常见的情况是服务器没有X11服务器,并且您不会读到:D。
我在这方面的专家,但我认为它的工作方式是,每个物理屏幕,即连接到个人计算机每台监视器的形式得到一个流水号0.0,1.0,2.0,...
该编号由X窗口系统(又称为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循环更好的方法。
使用外壳文本编辑器。vi,vim,nano和emacs是最常见的并且它们中的至少一个将被安装和操作。它们nano是最简单,最自我解释的。
for循环..现在它仅显示显示地址,例如:0 :0.0。如果您认为它不是您想要的