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


35

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

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

我已经安装了协同增效工具,并且可以使用台式机键盘/鼠标轻松控制笔记本电脑,但是我也想在台式机上运行某些程序,并在笔记本电脑屏幕上显示GUI。

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

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

PS在Ubuntu 12.10上运行XFCE 4.10

Answers:


39

变体A-将X Windows拍摄到另一个显示器:

  1. 可以看到,笔记本电脑上的Xserver开始侦听tcp连接。遗憾的是,在大多数发行版中,默认情况下都禁用X11网络。由于Xserver由显示管理器(gdm,lightdm)启动,因此必须在此处进行配置:

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

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

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

    对于初学者,请双手在笔记本上执行此步骤。一旦有了DISPLAY变量和所有内容的概念,就可以通过ssh做到这一点。

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

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

  3. 运行程序:在台式机run的终端中,在同一终端上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. 在远程外壳程序中输入export DISPLAY=:0此命令,使笔记本计算机上已经运行的显示器可用于通过ssh获得的外壳程序。如果现在运行任何X命令,该命令将已经出现在笔记本屏幕上,但仍将在笔记本计算机上运行(为安全起见,请尝试使用该命令)。
  3. 从此Shell SSH返回您的台式计算机,这次使用-X。现在,您在ssh会话所源自的机器上有一个外壳,但是这次使用有效的X。运行xeyes或xcalc对其进行测试。
  4. echo $DISPLAY为您显示名称,您的笔记本电脑X显示屏现在已安装在台式计算机上。即:10或:11。
  5. 您现在可以最小化终端。现在,无论何时export DISPLAY=:10在台式机上输入(查看显示的编号),以后在同一外壳中运行的每个程序都会出现在笔记本屏幕上。

    由于所有X11流量都是通过SSH转发的,因此此变量很容易但很慢。

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

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

  1. 在桌面上配置显示管理器以回答XDMCP广播。如何执行此操作取决于您的显示管理员。一些显示经理根本不支持此功能,即苗条。XDM,KDM,WDM,GDM确实支持它。

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

    显示管理员将看到凭证已生成和交换以及所有内容。恭喜,您现在应该看到台式计算机提供的登录窗口。


2
顺便说一句。一旦Ubuntu切换到Wayland,所有这些出色的X11功能将停止工作。原始的Wayland应用程序甚至无法再通过ssh转发。
保罗·汉施(PaulHänsch)2012年

6
没有图形工具链来控制您的X-Server是否很讽刺?如果您确实想使用GUI,则必须首先控制命令行。
保罗·汉施(PaulHänsch)2012年

常规提示:您可能要在远程显示器上启动的第一个程序是应用程序启动器。即lxpanel或其他东西。这样可以节省很多命令行工作。
保罗·汉施(PaulHänsch)2012年

这对于Ubuntu 17的+还是有效?还是Wayland的预测通过了?
Xen2050

19

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

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

sudo apt-get install ssh

要连接到台式机,请在笔记本电脑上打开一个终端,然后键入以下内容

ssh -X username@desktop_pc_ip

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


2
不要忘记验证sshd配置文件(通常是/ etc / ssh / sshd_config)是否也将X11Forwarding设置为yes。
Matrix Mole 2012年

这是我的用例:例如,我在桌面上并打开Firefox,但我希望浏览器窗口在笔记本电脑显示屏上打开并仍在桌面上运行。我正在寻找与工作区类似的功能,但不是使用本地工作区(同一台PC上有4个屏幕)来使用远程工作区(笔记本电脑)
Vlad Balmos 2012年

2
您也可以尝试该x2x软件包,也可以在另一台计算机上使用一个键盘和鼠标。例如:ssh -X user@host x2x -west -to :0
OHLÁLÁ

@iUngi我已经为此使用了协同作用,无论如何还是要感谢
Vlad Balmos 2012年

请注意,通过打开对桌面X服务器的访问权限,您可以对远程计算机进行相当广泛的访问。如果您的服务器受到攻击,则也可以将其用于进入台式机。X11转发很有用,但是请考虑您在做什么,并且默认情况下不要将其打开。
mc0e 2014年

7

制备

(您只能执行一次)

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

sudo apt-get install openssh-server


在您的笔记本电脑上:

ssh -X username @ desktop_pc_ip

在终端中,您所运行的所有内容都将显示在桌面上,但显示在笔记本电脑上。如果您想坐在台式机上进行同样的操作(并在笔记本电脑上发送窗口),请继续。

在您的终端上运行

回声$ DISPLAY

这将显示以下内容:

localhost:10.0

在桌面上:

打开终端并运行

DISPLAY=:10.0 firefox

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


3

您正在考虑结合使用SSH和屏幕来获得所需的情况。

在桌面上,安装屏幕:

sudo apt-get安装屏幕

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

屏幕

并在其中打开Firefox:

火狐

在桌面上全部使用firefox,然后从笔记本电脑SSH到计算机中:

ssh -X用户名@主机名

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

屏幕-ls

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

屏幕-x 1234

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


尝试了。从终端打开屏幕,在桌面上启动Firefox,然后从笔记本电脑喷入桌面,连接屏幕会话,但是我在笔记本电脑上没有任何窗口,只是屏幕上正在运行的程序的输出。
弗拉德·巴尔莫斯

你搞混了。等等...你们至少有一个。在台式机上安装屏幕,使用笔记本电脑进入ssh -X台式机,在ssh会话中启动屏幕,分离它并保持会话运行。然后用手在台式计算机上重新连接屏幕会话并运行某些程序。这类似于我的“ SSH扭曲”答案。使用屏幕会更加方便。
保罗·汉施(PaulHänsch)2012年

3

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

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

http://www.virtualgl.org/

您还可以通过SSH以上述的/ dude导出桌面环境。


谢谢。看起来很有希望。我会看一下并通知您。
弗拉德·巴尔莫斯

是的,“ TurboVNC”(还包括它的组件VirtualGL)是我在寻找可以让我玩视频游戏和电影的远程桌面程序的结果。它可以轻松用作额外的监视器。
TardisGuy 2012年

1

在网上进行了更多挖掘之后,我遇到了DMX

从首页

Xdmx是代理X服务器,它为连接到不同计算机的多台显示器提供多头支持(每台显示器都运行典型的X服务器)。当Xinerama与Xdmx一起使用时,多台计算机上的多个显示器将作为一个统一的屏幕显示给用户。


1
如果您可以提供有关如何安装和使用的说明,这将是一个更好的答案。
fossfreedom

XmetaX提供了类似的功能。Xdmx和XmetaX可以替代吗?
Mariusz 2014年

1

对的,这是可能的。我正在将两台装有xclock的linux计算机安装在本地计算机上。我正在尝试在本地运行xclock并在远程linux计算机上显示时钟。

reboot the remote machine
Disable firewall
Disable SELINUX
Check $DISPLAY variable value by command
echo $DISPLAY
Let say its value is :1
run command
xhost +

Now on local computer
xclock -display remote_machine_IP_address:1
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.