SSH:在远程屏幕上启动GUI程序,而不是X显示


11

问题

大多数人都希望使用“ -X”选项通过ssh连接到服务器,以便使用客户端的显示在远程主机上运行GUI程序。我想在连接到服务器的物理监视器上运行GUI程序。这可能吗 ?让我更具体一点:

我的情况如下:我有一个没有键盘或鼠标的工作站,但是连接了监视器。我想使用笔记本电脑通过SSH进行连接,并能够启动一些图形程序,例如xeyes或ssvnc,并将其显示在工作站的监视器上。

[xapple@laptop ~]$ ssh workstation
Last login: Mon Sep 26 20:03:35 2011 from laptop
[xapple@workstation ~]$ export DISPLAY=:0
[xapple@workstation ~]$ xeyes
No protocol specified
Error: Can't open display: :0

编辑:额外信息

我也许应该更清楚地解释一些事情:

  • 我在工作站上具有sudo访问权限,如有需要,我可以安装任何东西。
  • 工作站正在运行GNOME用户界面。
  • 在从工作站断开键盘和鼠标的连接之前,我登录了GNOME会话。因此,当前可以在工作站的监视器上看到我的GNOME桌面。
  • 我不希望从工作站上的笔记本电脑运行程序。我想在工作站上运行工作站程序。xeyes或任何在远程服务器上找到的可执行文件,应在远程服务器的监视器上运行
  • 我知道执行此操作将使我处于无法将光标连接到界面的情况。我无法点击任何东西。没关系。

任何帮助,不胜感激!


您是否xhost +在服务器上执行过?
karlphillip 2011年

我认为这也是一个有趣的问题,例如,如果您有3台运行Synergy的ubuntu PC,在这3台之间使用相同的键盘和鼠标...登录时,您必须登录3次。当您登录到主PC时,编写一个可以将您登录到其他两台PC的脚本会很好。
弗维尔2014年

Answers:


5

任何xlib应用程序都必须连接到xserver。您必须通过以下任一方式告知应用与服务器的连接:

  • 设置环境变量DISPLAY
  • 使用命令行标志,例如 -display

通常可以通过连接字符串“:0”访问第一个xserver。因此,请尝试以下操作:

xeyes -display :0

或这个

env DISPLAY=:0 xeyes

在许多情况下(例如,当由GNOME的GDM启动时)XAUTHORITY,由于X11服务器将使用临时Xauthority文件,因此也需要进行设置。
user1686 2011年

有趣的是,设置了$ DISPLAY变量后,除了启动“ xeyes”时,除了“错误:无法打开显示”消息外,我现在还获得了“未指定协议”消息。
xApple 2011年

@grawity感谢您的建议。请问如何设置XAUTHORITY才能使命令起作用?
xApple 2011年

5

该工作站是否运行X Windows服务器?没有这些,这一切都没有意义。

您需要进行一些处理才能将数据处理为图形,像素,颜色和位置。没有某种软件来运行它,“监控器”是没有用的。

假设是。(但从文本来看,肯定听起来不是)

给定“工作站”和“笔记本电脑”的主机名(以及通过/ etc / hosts或DNS或其他适当的DNS解析)...如果没有,请用适当的IP地址替换计算机主机名。

ssh workstation
xhost +laptop

您此时可以注销工作站,因为这将设置工作站Xserver的权限以允许“笔记本电脑”连接。

如果在适当设置了DISPLAY env var的情况下启动程序,则可能导致应用程序在笔记本电脑上运行时显示在工作站上。

DISPLAY=workstation:0 xeyes

-要么-

export DISPLAY=workstation:0
xeyes

任一种方法都行得通,后者会使从该Shell启动的X11相关内容显示在工作站上。(希望如此)

“ xhost”行用于允许笔记本电脑连接到工作站的Xserver。没有它,您将获得权限被拒绝,除非您以没有权限启动X服务器,但实际上不建议这样做。“ xhost”保护仍然很la脚,因为数据是在笔记本电脑和工作站之间以“纯文本”形式发送的,并且可以被嗅探,但这是一个简单的解决方案。

如果您希望获得私密性,则需要在笔记本电脑和工作站(显示6000的端口6000)之间建立某种加密的隧道。是的,这很奇怪。

如果您处于受控环境中,那么使用'xhost + laptop'命令就足够了,如果您离开了该命令'xhost +'的'laptop'部分,那么任何人都可以连接到Xserver并显示内容。

请记住,您的鼠标未“连接”到工作站Xserver,并且您将无法操作窗口或单击任何东西。

如果您要连接鼠标,我建议您使用x2x,synergy,vnc或基于X Windows的屏幕共享应用程序。


感谢您的回答 !没错,我可能需要指定一些其他内容:(1)工作站正在运行GNOME用户界面(2)我不希望从笔记本电脑运行程序。Xeyes或应在带有工作站显示器的工作站上运行的任何东西(3)没关系,我知道我的光标将无法连接。
xApple 2011年

哦,那您真的只需要SSH到工作站,将DISPLAY变量设置为“ localhost:0”(或仅仅是“:0”),然后启动您的应用即可。您仍然需要处理权限(xhost + localhost可能是最佳答案)以及nohup或&!(背景和不显示),或外壳程序中的bg / disown命令,这样当您注销时应用程序不会退出。(当然,除非您要的是)
lornix 2011年

嗯,所以也许我的问题只是许可问题。虽然,如果我以root身份运行“ xeyes”,则错误消息是相同的。如果您发布解决许可问题的答案,我可以将其标记为已解决!
xApple

是否有人登录到工作站上的X Windows会话?否则,用于监听程序连接的代码将无法激活,而仅是登录内容。(我在简化)!尝试先向工作站ssh',然后再单击“ startx”,然后您就可以连接到显示器了。另一种方法是使用裸机X服务器,键入“ X:0&”,设置DISPLAY变量,然后执行“ xhost + laptop”(或仅执行“ xhost +”)。但这对于大多数人来说有点低级。(非常适合测试!)
lornix 2011年

是的,在断开键盘和鼠标的连接之前,我登录了工作站上的GNOME会话。尽管如此,我还是尝试从ssh会话执行“ startx”命令。错误消息如下:“ X:用户无权运行X服务器,正在中止。”
xApple
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.