问题描述
是否可以在我的本地桌面上运行应用程序,但在我的笔记本电脑上显示GUI(远程X)?
我想知道是否可以使用2个不同的局域网连接机器来模拟dual-monitor设置。
我已经安装了synergy,我可以用桌面键盘/鼠标轻松控制我的笔记本电脑,但我还想在桌面上运行一些东西并在笔记本电脑屏幕上显示GUI。
根据我对X的有限经验,我知道我可以在远程计算机上运行程序并使用第一个显示输出,但不是相反。
任何指针都会有很大的帮助。谢谢
附:在Ubuntu 12.10上运行XFCE 4.10
最佳解决方案
变体A – 将X Windows拍摄到另一个显示:
-
请注意,您的笔记本电脑上的Xserver会启动侦听tcp连接。遗憾的是,大多数发行版中默认禁用X11-Networking。由于Xserver由显示管理器(gdm,lightdm)启动,因此必须在那里进行配置:无论您使用何种显示管理器,/etc /中的某些配置文件可能包含负责的XServer参数。在您的笔记本电脑上运行
grep -r 'nolisten tcp' /etc/
以找出负责的配置文件,并删除其中显示-nolisten tcp
的部分(不是整行,只是此参数)。在笔记本电脑上重启X.您的笔记本电脑现在应该在tcp端口6000上运行显示器(尝试在台式机上运行nmap -p6000 Laptop
,如果端口报告为”open”,那么你来到这里)。 -
使您的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文件,可以在不同的计算机之间共享。 -
运行程序:在桌面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处理凭证交换。
-
从台式计算机通过SSH连接到您的笔记本电脑(您还不需要使用-X)。
-
在远程shell中输入
export DISPLAY=:0
,这使得笔记本上已经运行的显示可用于通过ssh获得的shell。如果你现在运行任何X命令,它将出现在你的笔记本电脑屏幕上,但仍然在你的笔记本电脑上运行(尝试安全)。 -
从这个shell ssh回到台式计算机,这次使用-X。你现在在ssh会话发起的机器上有一个shell,但这次是工作X.运行xeyes或xcalc来测试它。
-
echo $DISPLAY
显示您的笔记本电脑X显示屏现已在您的台式电脑上显示。即:10或:11。 -
您现在可以最小化终端。现在,只要您在台式计算机上输入
export DISPLAY=:10
(查看显示的编号),您在同一个shell中运行的每个程序都会出现在您的笔记本屏幕上。这种Variant很容易但很慢,因为所有X11流量都是通过SSH转发的。
变体C – 最初的瘦客户端概念:
您可以使用笔记本电脑打开完全在台式计算机上运行的桌面会话。
-
配置桌面上的显示管理器以应答XDMCP广播。如何执行此操作取决于您的显示管理器。一些显示管理器根本不支持这一点,即纤薄。 XDM,KDM,WDM,GDM都支持它。
-
在笔记本电脑上启动X-Server,从桌面请求显示管理器。嵌套X:
Xephyr :1 -query desktop
或Xephyr :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开销,那么您可以在笔记本电脑上从计算机上运行应用程序,那么这就是我要做的。
您也可以通过SSH导出桌面环境/上面提到的/dude。