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

xAp*_*ple 12 linux ssh display xorg

问题

大多数人希望使用“-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
Run Code Online (Sandbox Code Playgroud)

编辑:额外信息

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

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

非常感谢任何帮助!

aki*_*ira 5

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

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

第一个 xserver 通常可以通过连接字符串 ':0' 到达。所以,试试这个:

xeyes -display :0
Run Code Online (Sandbox Code Playgroud)

或这个

env DISPLAY=:0 xeyes
Run Code Online (Sandbox Code Playgroud)


lor*_*nix 5

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

你需要一些东西来将数据处理成图形、像素、颜色和位置。如果没有某种软件来运行它,“监视器”就毫无用处。

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

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

ssh workstation
xhost +laptop
Run Code Online (Sandbox Code Playgroud)

此时您可以退出工作站,因为这会设置工作站 Xserver 上的权限以允许“膝上型电脑”连接。

如果您使用适当的 DISPLAY env var 设置启动您的程序,您可以使应用程序显示在工作站上,同时在您的笔记本电脑上运行。

DISPLAY=workstation:0 xeyes
Run Code Online (Sandbox Code Playgroud)

-或者-

export DISPLAY=workstation:0
xeyes
Run Code Online (Sandbox Code Playgroud)

任何一种方法都有效,后者会导致从该 shell 启动时在工作站上显示与 X11 相关的任何内容。(希望这是有道理的)

'xhost' 行允许笔记本电脑连接到工作站的 Xserver。没有它,您将获得权限被拒绝,除非您在没有权限的情况下启动 X 服务器,这并不是真正推荐的。“xhost”保护仍然很蹩脚,因为数据是在笔记本电脑和工作站之间以“纯文本”方式发送的,并且可能会被嗅探到,但这是一个简单的解决方案。

如果您想要隐私,则需要在笔记本电脑和工作站之间设置某种加密隧道(端口 6000 用于显示:0)。是的,在这一点上变得很奇怪。

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

请记住,您的鼠标未“连接”到工作站 Xserver,您将无法操作窗口或单击事物。

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