当前位置: 首页>>技术教程>>正文


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

, , ,

问题描述

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

我想知道是否可以使用2个不同的局域网连接机器来模拟dual-monitor设置。

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

根据我对X的有限经验,我知道我可以在远程计算机上运行程序并使用第一个显示输出,但不是相反。

任何指针都会有很大的帮助。谢谢

附:在Ubuntu 12.10上运行XFCE 4.10

最佳解决方案

变体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,如果端口报告为”open”,那么你来到这里)。

  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. 运行程序:在桌面PC的终端上运行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中运行的每个程序都会出现在您的笔记本屏幕上。这种Variant很容易但很慢,因为所有X11流量都是通过SSH转发的。

变体C – 最初的瘦客户端概念:

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

  1. 配置桌面上的显示管理器以应答XDMCP广播。如何执行此操作取决于您的显示管理器。一些显示管理器根本不支持这一点,即纤薄。 XDM,KDM,WDM,GDM都支持它。

  2. 在笔记本电脑上启动X-Server,从桌面请求显示管理器。嵌套X:Xephyr :1 -query desktopXephyr :1 -broadcast或者通过关闭笔记本电脑X-Server并进入系统终端sudo Xorg :0 -broadcast显示管理器将看到它生成并交换了凭据以及所有内容。恭喜,您现在应该看到桌面计算机提供的登录窗口。

次佳解决方案

您可以使用ssh X转发来实现您的目标。如果您在同一子网中,则快速退出。

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

sudo apt-get install ssh

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

ssh -X username@desktop_pc_ip

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

第三种解决方案

Preparation

(你只做一次)

在桌面上安装SSH服务器

sudo apt-get install openssh-server


从笔记本电脑:

ssh -X username@desktop_pc_ip

在终端中,您可以获得在桌面上运行的任何内容,但显示在笔记本电脑上。如果你想坐在桌面上做同样的事情(并在你的笔记本电脑上发送窗口),那么继续。

在你的终端上运行

echo $DISPLAY

这将显示如下:

localhost:10.0

从您的桌面:

打开终端并运行

DISPLAY=:10.0 firefox

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

第四种方案

您正在考虑使用SSH和屏幕的组合,以获得您想要的情况。

在桌面上,安装屏幕:

sudo apt-get install screen

从那里开始一个新的屏幕会话:

screen

并在其中打开Firefox:

firefox

在桌面上使用firefox,然后从笔记本电脑进入计算机:

ssh -X username@hostname

键入以下命令以查看您运行的屏幕会话:

screen -ls

登录到您的屏幕会话(1234将是数字屏幕-ls给你)

screen -x 1234

然后,您可以在笔记本电脑上使用firefox并关闭桌面终端。

第五种方案

Virtualgl将创建一个额外的(后台)桌面(TightVNC样式),您可以通过turbo VNC客户端访问它。它将作为远程桌面类型交易 – >但它将通过网络播放流畅的视频。

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

http://www.virtualgl.org/

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2995.html,未经允许,请勿转载。