XServer,远程Debian工作站

我希望build立一个运行Debian Linux的无人工作站机器。 我想实际上在另一台机器上运行XServer。 认为瘦客户端,虽然“瘦客户端”机器实际上相当健壮。 在最大程度上,我希望瘦客户端机器感觉像在本地做所有事情,而实际上在远程工作站上存储所有文件(除了config,cache和ssh私钥以外) CPU在远程工作站上处理。 两台电脑连接在一个局域网上。

所以,瘦客户端的键盘input,鼠标input,并显示GUI。 在工作站上的其他一切(桌面pipe理器,所有软件,全部处理)。

我如何做到这一点? VNC并不适合它的需要(或者似乎需要)我在本地login,在工作站上,然后远程回显桌面。 我可以使用ssh,但是这要求我在瘦客户端机器上运行完整的桌面环境,但是我真的希望在那里尽可能less。

我不需要手持,我只是不确定我的select。 显然有可能,我们以前在90年代早期这样做,我只是不知道如何。 瘦客户机拥有充足的硬盘空间,大量的CPU能力和32GB的内存,只是工作站function更强大。 而且更好地控制。 但坐在壁橱里,没有监视器。

在客户端上,您将需要足够的操作系统来启动,加载库,pipe理本地video/键盘/鼠标,并运行X服务器。 在远程无头盒子上,你可以定期安装任何你想要的东西,然后configuration欢迎词(gdm,kdm,mdm,xdm是典型的select,这取决于桌面环境等),以允许通过XDMCP协议进行查询。 完成之后,在本地客户端上启动X服务器并告诉它在远程主机上查询欢迎者。 应用程序从远程主机运行,用户交互发生在本地客户端上。

你甚至可以在你的本地机器上运行一个完整的操作系统,当你需要从远程获得某些东西时,你可以使用Xnest将第二个X服务器embedded你当前的服务器中,查询远程主机,并作为一个应用程序运行第二个桌面像VNC的作品。

你的问题提出了许多概念,其详细讨论需要的不仅仅是一本书(…因为大多数这些“概念”起源于XWindow的早期,并发展到今天…)。

因此,我不想说我会为你提供一个详细的答案而显得很疯狂。

尽pipe如此,在接触Unix / Linux / XWindows系统下的应用程序远程化时,我会通过触及一些你应该清楚记住的内容来解决它:

  1. “ X窗口系统 ”是几乎所有显示某种GUI的Linux应用程序的基础。 当您邀请您自己查看详细信息时(您可以search到超过30年的历史),我想强调一个非常重要的点: 在devise上,X11是架构化的,以便每个应用程序都可以在主机上运行并且同时在一个完全不同的主机上呈现(至于GUI) 。 这不需要程序员的任何明确的努力。

    这与以往人们习以为常的不同,在Win32平台下,从几十年前开始,只有一个显式层(RDP和相关的terminal服务)提供了类似的行为(但在Win 3.XX中肯定缺less,Windows 95,Windows 98,Windows NT,以及可能在一些以后的系统上,更不用说授权问题了……)

    所以这意味着 – 一般来说 – 在90年代初,你可以坐在一个Xterminal前,让它显示你在不同的服务器上运行的应用程序。 正是你在OP中指向的解耦。

所以,回到你的问题,你可以肯定地运行你的X11应用程序在你的衣柜里的大铁,并把它的GUI渲染到别的地方。

这够了吗? 不幸的是没有….让我解释为什么:

  1. 远程应用程序 ”与“ 远程桌面 ”:有时在我的桌面上就足够了(我指的是显示在我的笔记本的显示器上的graphics资料,我正在运行一个完整的Ubuntu桌面)在其他地方运行的应用程序的GUI。 作为一个例子,我有正常的桌面,但…“火狐”窗口是关系到一个“火狐”运行在不同的机器上。 在这种情况下,我在桌面环境中访问远程应用程序

    其他时候,我宁愿让整个桌面被远程系统渲染,而不是单个应用程序。 因此,远程系统需要解决更多的问题,因为…还有一些“特殊”窗口(覆盖整个显示器并且不呈现任何边界,或多或less)呈现,并且顶部呈现整套桌面应用程序(菜单栏,状态栏等)。 在这种情况下,我正在访问一个完整的远程桌面

根据你的问题,目前还不清楚你是否对“远程应用程序”,“远程桌面”或两者都感兴趣。

这一切吗? 尚未…不幸的是。

  1. 传输 ”:很明显,将应用程序逻辑(在服务器上运行)与GUI(在远程显示器上显示)解耦,意味着需要一个可靠的networking通信通道。 当X11开发时,可能我还没有出生(顺便说一句,我是46!)。 没有互联网。 没有“风险联网”的概念。 因此,X11协议绝对没有任何安全问题。 因此,如果你坐在一个带有abcd的Xterminal前面,那么你只需telnet efgh ,然后从那里启动一些类似于:

xclock --display abcd:0.0

突然出现了xclock窗口。 那时,如果你的朋友坐在terminalyzxw ,你会给他一个root shell,你(从abcd )可以简单地:

 telnet efgh su - xterm --display yzxw:0.0 & 

突然你的朋友有一个xterm窗口popup,根权限,并没有input任何密码!

请记住,我们正在谈论Win32系统不存在的时间表。 至多,这是Windows 3.11的时间。

现在快20年了。 互联网到了。 它的安全问题。 突然之间,很多人发现很容易抓住“video”,“鼠标”和“键盘”在未encryption的X11会话周围stream动。

几个解决scheme(其中很多仍然是模糊的/未知的)已经实现,但是迄今为止最好的解决scheme是SSH-X11-Forwarding 。 感谢它,现在,在2017年,我每天坐在桌子上,在工作中,我:

  • 把我的笔记本放在坞站上,然后打开(在我桌子的一个angular落)。
  • 在我的台式电脑上login(左开机,显示/会话“locking”),连接到两个大的27“显示器;
  • 从我的桌面ssh到我的笔记本ssh -X [email protected] ;
  • 从由此产生的terminal,发射一个thunderbird &

所以我有我的雷鸟,安装和运行在笔记本电脑(所有相关的档案),并显示在一个更舒适的2×27“显示器。

这……尽pipe自从推出X11以来,已经过去了30年……而且不需要任何forms的授权

这是全部吗? 还没 :-)

  1. X.clientX-Server :思考我每天用我的雷鸟做什么,你应该看到:

    • thunderbird在我的笔记本上运行的X客户端 ,无人坐在前面;
    • 我的Linux桌面PC是X-server ,从客户端接收X11stream,并将其呈现在本地显示器上。

    所以这听起来像客户端和服务器的angular色相反。 这就是您称之为“瘦客户端”的情况:从networkingangular度来看,他们不是客户端:它们是“服务器”。 这就是为什么要在您的设备上显示远程X11应用程序,您需要运行一个X-Server:因为您需要一个X-Server,能够理解来自networking的X11stream(来自客户端)并正确渲染结果显示。

    在之前的回答中,你已经被告知了Xnest ,实际上我会添加Xephyr :他们是:

    • 标准的X11应用程序,从本地XServer的angular度来看。 因此,它们在本地显示器上呈现“本地”

    • 他们是X-服务器,就是说他们能够接收远程应用程序(tipical,一个完整的远程桌面)的X11stream,并将其呈现在一个窗口内。

一般来说,没有任何东西可以阻止你使用已经安装好的XServer,而不需要Xephyr或Xnes​​t。 换句话说,您可能需要使用安装在您自己的Linux主机上的XServer连接到要求接收整个X11桌面数据stream的远程主机。 一般来说,这将是一样简单的:

  • 退出X11,回到文本CLI(无GUI);
  • 只需启动一个: X -query abcd

其中abcd是主机的IP地址,其中XDMCP协议已被configuration和启用(或多或less)。

这个网站上的大师会说我过于简单….他们是对的! 所以,请把上面的方法( X -query )作为进一步调查的一个要点。

我们完成了吗? 是的,但在添加其他几个快速要点之前不要:

  1. 协议效率 :30多年前开发的X11,肯定是一个不好的协议:使用带宽低于100Mbps时会遇到很多麻烦(顺便说一句:在我的办公室里,我有千兆连接笔记本和我的桌面)。 YMMW,但是请您在试验时记住这一点(即使您在远程VPS上启动时, xclock窗口甚至会在30秒后出现)。 我承认,微软公司的RDP,几年之后到货,对带宽的友好性要高得多。 从这个angular度来看,RDP实际上要优于X11;

  2. 为了解决第五点,几个项目已经付出了很多的努力。 主要的 – 恕我直言 – 是NX和相关的FreeNX(这实际上似乎是一个死了的项目,不幸);

  3. 在我看来,在目前的日子里(2017年),试图实现整个桌面(没有Xnest或者更好的Xephyr)的远程化比以前复杂得多…而且确实要复杂得多,然后只需要远程化你需要的应用程序。 这是由于当前的桌面环境在更高的层次上发展起来的……他们在“assembly”远程X11显示器时遇到了很多问题(想想你可以用类似compiz的技术获得惊人的animation,对于一个体面的远程渲染来说,这是一个相关的要求,除了X11协议的固有漏洞所要求的安全性问题之外。

就这样。

我真的知道,我绝对没有回答你的问题:我只希望给你一些关于这个美妙的X11世界的非常好的见解…你会很高兴自己发现:-)

在瘦客户机上启用自动login。 在您select的远程login程序的瘦客户端桌面上设置启动应用程序。 考虑RDP,它也可以很容易地连接到你可能拥有的任何Windows服务器。

瘦客户端将需要足够的GUI来运行X服务器或同等服务器。 专门的,重量轻,只读的瘦客户端分布存在像LTSP一样。 或者只是ssh -X并且特别运行远程程序。

请记住,程序正在服务器上运行。 用户需要习惯于保存到networking共享,如果他们想要find他们的文件。 另外,如果使用不同的版本或用户select的主题,GUI可能会有点不同。