在本地机器上运行应用程序并在远程显示器上显示 GUI

在本地机器上运行应用程序并在远程显示器上显示 GUI

是否可以在我的本地桌面上运行应用程序但在我的笔记本电脑上显示 GUI(远程 X)?

我想知道是否可以使用 2 台不同的局域网连接机器模拟双显示器设置。

我已经安装了 synergy,并且我可以使用桌面键盘/鼠标轻松控制我的笔记本电脑,但我还想在桌面上运行一些程序并在笔记本电脑屏幕上显示 GUI。

从我对 X 的有限经验来看,我知道我可以在远程机器上运行一个程序并使用第一个机器的显示来显示输出,但不能反过来。

任何建议都会很有帮助。谢谢

PS 在 Ubuntu 12.10 上运行 XFCE 4.10

答案1

变体 A-将 X Windows 投射到另一个显示器:

  1. 确保笔记本电脑上的 Xserver 启动后监听 tcp 连接。遗憾的是,大多数发行版默认禁用 X11-Networking。由于 Xserver 由显示管理器 (gdm、lightdm) 启动,因此必须在那里进行配置:

    无论您使用哪种显示管理器,/etc/ 中的某些配置文件可能都包含负责的 XServer 参数。grep -r 'nolisten tcp' /etc/在您的笔记本电脑上运行以找出负责的配置文件并删除其所在的部分-nolisten tcp(不是整行,只是这个参数)。在您的笔记本电脑上重新启动 X。

    您的笔记本电脑现在应该在 tcp 端口 6000 上运行显示器(尝试nmap -p6000 Laptop在您的台式电脑上运行,如果端口报告为“打开”,则说明您已经到了这一步)。

  2. 让您的 X-display 可供台式计算机使用。X11 使用身份验证机制来授予对显示器的访问权限。您必须允许台式 PC 将 Windows 投射到笔记本电脑上。通常通过交换显示 cookie。

    首先,用手在笔记本上执行此步骤。一旦您掌握了DISPLAY变量和所有内容的概念,就可以通过 ssh 执行此操作。

    快速而粗略:您可以xhost +desktops.computers.ip.address在笔记本电脑上运行以授予台式计算机 X 访问权限。请注意每个用户笔记本电脑上的用户可以通过这种方式使用笔记本电脑的 X 显示屏。请注意,这足以在笔记本电脑显示屏上安装键盘记录器。仅将此方法用于测试。

    正确且安全:xauth extract cookie-file :0在笔记本电脑上运行,将您的显示访问密钥导出到“cookie-file”。将 cookie 传输到您的台式机。运行xauth merge cookie-file。或者只需一步(从您的台式机)ssh Laptop xauth extract - :0 |xauth merge -注意:如果您的笔记本电脑和台式机共享主目录,即通过 nfs,您无需交换任何凭据。凭据数据库是您主目录中的 .Xauthority 文件,可以在不同的机器之间共享。

  3. 运行程序:在台式电脑的终端中运行export DISPLAY=Your.Laptops.IP.Address:0,在同一终端中运行任何 X 程序。它应该出现在笔记本电脑的显示屏上。

变体 B-使用 SSH 但略有不同。

SSH 通过将本地 X11 套接字(通常是 Unix 域套接字)转发到远程计算机上的本地 TCP 套接字,然后协商显示 cookie,然后在远程计算机上设置 DISPLAY-Environment,来实现 X11 转发。这样,所有 X11 流量都会通过 ssh 隧道加密。正常用例是将本地显示转发到远程计算机(意味着允许远程应用程序在本地显示 x 窗口)。

使用 ssh 的优点是,您不需要将 X-Server 置于 tcp 监听模式(因为使用的是 unix 套接字)。而且 ssh 会处理凭证交换。

  1. 从您的台式计算机通过 SSH 连接到您的笔记本电脑(您暂时不需要使用 -X)。
  2. 在远程 shell 中输入export DISPLAY=:0此命令,可使笔记本电脑上已运行的显示内容可供通过 ssh 获得的 shell 使用。如果您现在运行任何 X 命令,该命令将已经出现在笔记本电脑屏幕上,但仍在笔记本电脑上运行(请尝试一下以确保安全)。
  3. 从此 shell ssh 返回您的台式计算机,这次使用 -X。现在您在发起 ssh 会话的机器上有一个 shell,但这次 X 正常工作。运行 xeyes 或 xcalc 进行测试。
  4. echo $DISPLAY显示您的笔记本电脑 X 显示器现在位于您的台式计算机上的名称。即 :10 或 :11。
  5. 现在您可以最小化终端了。export DISPLAY=:10现在,只要您在台式计算机上输入(查看您得到的显示编号),之后您在同一个 shell 中运行的每个程序都会出现在您的笔记本电脑屏幕上。

    这个变体很简单但很慢,因为所有 X11 流量都是通过 SSH 转发的。

变体 C-原始瘦客户端概念:

您可以使用笔记本电脑打开完全在台式计算机上运行的桌面会话。

  1. 配置桌面上的显示管理器以响应 XDMCP 广播。如何执行此操作取决于您的显示管理器。有些显示管理器根本不支持此功能,即 slim。XDM、KDM、WDM、GDM 支持此功能。

  2. 在笔记本电脑上启动 X-Server,它会从桌面请求显示管理器。嵌套的 X:Xephyr :1 -query desktopXephyr :1 -broadcast 关闭笔记本电脑 X-Server 并在系统终端上输入sudo Xorg :0 -broadcast

    显示管理器将负责生成和交换凭证等所有事项。恭喜,您现在应该可以看到台式计算机提供的登录窗口。

答案2

您可以使用 ssh X 转发来实现您的目标。如果您在同一个子网中,那么它很快就会退出。

在笔记本电脑和台式电脑上安装 ssh 服务器和客户端

sudo apt-get install ssh

要连接到台式电脑,请在笔记本电脑上打开终端并输入以下内容

ssh -X username@desktop_pc_ip

您可以使用终端启动任何软件,例如启动 Firefox,只需firefox在终端中输入即可。

答案3

准备

(只需执行一次)

在你的桌面上安装 SSH 服务器

sudo apt-get 安装 openssh-server


从你的笔记本电脑:

ssh -X 用户名@桌面电脑的ip

在终端中,您运行的任何内容都将显示在桌面上,但会显示在笔记本电脑上。如果您想坐在桌面上执行相同操作(并在笔记本电脑上发送窗口),请继续。

在你的终端上运行

回显$DISPLAY

这将向你显示类似如下的内容:

localhost:10.0

从您的桌面:

打开终端并运行

DISPLAY=:10.0 firefox

这应该会发送一个firefox窗口到您的笔记本电脑上,但在您的台式机上运行。确保您输入的数字(例如)与结果10.0中的数字相同echo

答案4

虚拟主机将创建一个额外的(背景)桌面(TightVNC 风格)您可以通过turbo VNC 客户端它将作为远程桌面类型的交易 -> 但它将播放流畅的视频通过网络。

如果你正在寻找一种方法卸载 CPU 开销用于远程连接,这样您就可以在笔记本电脑上运行计算机上的应用程序,那么这就是我要做的。

http://www.virtualgl.org/

您还可以通过 SSH 导出桌面环境,如上面提到的 /dude。

相关内容