如何在Debian 8上使用X2Go设置远程桌面

介绍

为了提高效率,安全性以及从命令行执行所有操作的能力,许多服务器不使用图形用户界面(GUI)。但是,有时您需要在远程服务器上运行GUI应用程序,例如在浏览器中测试网站或者您正在寻找具有完整桌面环境(DE)的远程可访问工作站时。

在运行Linux或其他*nix变体的远程计算机上与图形界面交互的典型解决方案是虚拟网络计算(VNC)。不幸的是,VNC出了名的迟缓,默认情况下不安全,需要大量的手动配置才能启动和运行。如果您使用其他系统,可以参考基于 CentOS 搭建 VNC 远程桌面服务基于 Ubuntu 搭建 VNC 远程桌面服务的相关教程。

相比之下,X2Go提供了几个优点:

  • X2Go不是像VNC那样从远程机器向您的计算机发送图像,而是使用X(图形)服务器和X11协议的修改版本来最小化客户端和服务器之间交换的数据量。这为您提供了近乎本地化的桌面体验。这种性能的唯一要求是客户端和服务器之间的网络距离不是太大。从客户端计算机ping服务器时,往返时间不应超过100毫秒。接近50ms是最佳的,200ms是可以接受但不是很好。
  • X2Go与您现有的SSH守护程序一起使用,加密客户端和服务器之间的所有流量,同时依赖于经过充分测试和安全的身份验证机制。
  • X2Go不需要复杂的手动配置。它知道如何设置会话并自动启动流行的桌面环境,如XFCE,LXDE,MATE等。
  • 与VNC不同,X2Go在您登录时设置环境,因此您无需始终保持X服务器运行。此外,即使断开连接后,您的会话也会继续运行,这意味着当您重新连接时,您会在离开时找到所有内容,就像在本地桌面上一样。
  • X2Go支持多个登录会话,桌面和登录到各自独立环境的用户。
  • 您可以在X2Go中启动单个图形应用程序,而不是整个桌面环境,在利用服务器更强大的资源的同时节省本地计算机的资源,甚至可以让任务一次远程运行几天。

这样的设置在以下情况下很有用

  • 您需要此类桌面环境,但无法在本地安装基于Linux的操作系统。
  • 你正在旅行,但不能随身携带你的电脑。
  • 您的Internet服务提供商为您提供的带宽非常少,但您需要访问数十或数百GB的数据。
  • 您需要一台单独的机器来处理某些事情,一次数周或数月。
  • 您正在与团队合作,每个人都需要访问单个远程桌面。
  • 您需要图形桌面,高速Internet,可靠电源以及快速扩展和缩放资源的能力的组合。

在本教程中,我们推荐Debian而不是Ubuntu,因为某些版本的Ubuntu的默认DE,Unity与X2Go不兼容。而且,替代桌面环境有时会在Ubuntu上出现问题。

同样,我们推荐使用XFCE,因为它不需要运行专用视频卡,因此它与X2Go更兼容。但是,LXDE,Mate(禁用合成),甚至更老的KDE,Unity和Cinnamon(以及一些调整)也可以工作。

最后,Firefox-if xrender处于活动状态(默认情况下在Debian 8中) -通常可以为X2Go提供更流畅的体验。

完成本教程后,您将拥有一个可以远程连接的Linux桌面,其中包含与本地安装Debian XFCE完全相同的实用程序。此外,通过安装和配置防火墙,您可以保护远程桌面,使其更难以利用。

准备

在开始学习本教程之前,您需要:

  • Debian 8 x64实例,带有1或2GB RAM。(1GB是最小的,2GB开始时更安全,4GB是最佳的)。选择尽可能靠近您要连接的区域的服务器位置。
  • 具有sudo权限的用户。

请记住,如果RAM耗尽,Linux内核将终止应用程序,您可能会丢失任务。

第一步 - 防火墙服务器

安装整个桌面环境会引入许多其他软件依赖性和建议,其中一些可能会尝试打开网络端口。例如,许多DE中包含的通用UNIX打印系统(CUPS)可能会尝试打开端口631.虽然像CUPS这样的服务在家里可能很有用,但我们不希望我们的服务器暴露在整个Internet上,所以阻止每个传入的连接是个好主意。唯一的例外是端口22,它将保持打开状态,以便我们能够连接SSH和X2Go。

为了保护我们的服务器,我们将使用简单防火墙(UFW),因为它不容易出现初学者错误,更易于理解和管理,并且更符合我们只允许连接到一个端口的目标。iptables和其他更复杂的防火墙更适合需要更细粒度细节的高级和复杂规则。

首先,安装UFW:

$ sudo apt-get install ufw

默认情况下,防火墙此时应处于非活动状态。您可以查看:

$ sudo ufw status verbose

结果应该是:

Status: inactive

当我们稍后阻止所有传入连接时,如果ufw处于活动状态,则在此时验证状态对于避免锁定自身非常重要。

如果UFW已经激活,请使用以下命令将其禁用:

$ sudo ufw disable

现在,设置默认防火墙规则以拒绝所有传入连接并允许所有传出连接:

$ sudo ufw default deny incoming
$ sudo ufw default allow outgoing

并且,允许SSH连接到服务器(端口22):

$ sudo ufw allow 22

有了规则,让我们激活ufw:

$ sudo ufw enable

这将输出:

Command may disrupt existing ssh connections. Proceed with operation (y\|n)?

输入y并按ENTER以激活防火墙。

有了我们的防火墙,我们的服务器只有一个入口点,我们已准备好为X2Go服务器安装图形环境。

第二步 - 安装桌面环境

在本教程中,您将安装XFCE桌面环境。有两种方法可以实现此目的,但您只需选择一种-最小桌面环境或完整桌面环境。

最小的桌面环境:如果你想安装一个小的核心软件包,然后通过手动添加你需要的任何东西来构建它们,你可以使用xfce4元数据包

元数据包不包含自己的软件,它只依赖于要安装的其他软件包,允许一次安装整个软件包集合,而无需在命令行单独输入每个软件包名称。

安装xfce4以及支持它所需的所有其他依赖项:

$ sudo apt-get install xfce4

完整的桌面环境:如果您不想手动挑选所需的每个组件,而是希望拥有一组默认的软件包,如文字处理器,网络浏览器,电子邮件客户端和其他预装的配件,那么您可以选择task-xfce-desktop

安装和配置一个完整的桌面环境,类似于您在本地PC上通过可引导DVD获得的Debian XFCE:

$ sudo apt-get install task-xfce-desktop

现在我们已经安装并配置了我们的图形环境,我们需要设置一种从另一台计算机上查看它的方法。

第三步 - 在服务器上安装X2Go

X2Go带有两个主要组件:服务器,用于启动和管理远程计算机上的图形会话;客户端,我们在本地计算机上安装以查看和控制远程桌面或应用程序。

由于Debian在其默认存储库中不包含X2Go服务器,因此我们必须在包管理器的配置中添加额外的存储库。

首先,导入X2Go开发人员的公钥。这是一种安全措施,可确保我们只能下载和安装使用其私钥正确签名的软件包。

$ sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E

现在,将存储库添加到包管理器的配置文件中:

echo 'deb http://packages.x2go.org/debian jessie main' | sudo tee /etc/apt/sources.list.d/x2go.list

这将创建文件/etc/apt/sources.list.d/x2go.list并向其添加行debhttp://packages.x2go.org/debian jessie main,告诉包管理器在哪里可以找到补充包。

要刷新可用软件包的数据库,请输入以下命令:

$ sudo apt-get update

最后,在服务器上安装X2Go:

$ sudo apt-get install x2goserver x2goserver-xsession

此时,您的服务器无需进一步设置。但是,请记住,由于禁用SSH密码身份验证以提高安全性,因此您需要在要从中登录的任何计算机上使用SSH私钥。

我们现在完成了设置服务器并可以输入exit或关闭终端窗口。其余步骤将重点关注本地计算机的客户端。

第四步 - 在本地安装X2Go客户端

如果您在本地计算机上使用Windows,则可以从http://code.x2go.org/releases/X2GoClient_latest_mswin32-setup.exe下载客户端软件。

选择首选语言并同意许可后,向导将指导您完成安装过程的每个步骤。通常,没有任何理由可以更改这些步骤中预先填充或预先选择的任何默认值。

如果您在本地运行macOS,可以在http://code.x2go.org/releases/X2GoClient_latest_macosx_10_9.dmg找到客户端软件。

双击.dmg文件以打开包含版权,许可证和X2Go客户端可执行文件的文件夹,然后双击可执行文件以启动客户端。

而且,如果您使用的是Debian或Ubuntu,您可以安装X2Go客户端:

$ sudo apt-get install x2goclient

如果您想了解有关客户的其他信息,或者您想从源代码构建,可以访问X2Go的官方文档。

现在已经安装了桌面客户端,我们可以配置其设置并连接到X2Go服务器以使用我们的远程XFCE桌面。

第五步 - 连接到远程桌面

首次打开X2Go客户端时,应显示以下窗口。如果没有,请单击在左上角菜单上的会话,然后选择新建会话...

X2Go客户端

在“会话名称”字段中,输入一些内容以帮助区分服务器。如果您计划连接到多台计算机,这可能特别有用,因为保存设置后,所有名称都将列在程序的主窗口中。

在“服务器”下的“主机”字段中输入服务器的IP地址或主机名。

在“ 登录”字段中输入用于SSH连接的用户名。

而且,由于这是我们在第二步中安装的内容,因此请选择XFCE作为您的会话类型

最后,因为我们使用SSH密钥登录服务器,单击“ 使用RSA / DSA密钥进行ssh连接”旁边的文件夹图标然后浏览到您的私钥。

其余的默认设置现在应该足够了,但随着您对该软件的熟悉程度越来越高,您可以根据个人喜好微调客户端。

按“确定”按钮后,您可以通过单击屏幕右上角包含会话名称的白色框来启动图形会话。

主界面

几秒钟后,将显示远程桌面,您可以开始与之交互。首次登录时,XFCE将询问您是否要使用默认配置一个空面板。第一个选项将创建一个停靠在屏幕底部的矩形面板,其中包含一些有用的应用程序快捷方式(例如文件管理器,终端仿真器,浏览器等)。此选项还将在桌面上添加一个顶部面板,其中包括应用程序启动器,时钟,关机菜单等实用程序。

除非您已经熟悉XFCE,否则因为您将从头开始,选择空面板可能会更复杂。没有任务栏,没有时钟,没有预先配置的开始菜单;您可以自行将所有内容添加到空面板中。

此外,在基于Windows和Linux的操作系统上,您可以使用一些有用的键盘快捷键来获得更好的体验:

CTRL+ALT+F将打开和关闭全屏模式。在全屏模式下工作可以感觉更像是本地桌面体验。此外,其他键盘快捷键将被远程操作系统而不是本地操作系统抓取。

CTRL+ALT+M即使您处于全屏模式,也会最小化远程视图

CTRL+ALT+T将断开与会话的连接,但让GUI在服务器上运行。这只是在不注销或关闭服务器上的应用程序的情况下断开连接的快速方法。如果单击窗口的关闭按钮,也会发生相同的情况。

最后,有两种方法可以结束远程会话,关闭其中运行的所有图形程序。您可以从XFCE的开始菜单远程注销,也可以单击屏幕主要部分右下角标有圆圈和小线条(如电源/待机图标)的按钮。

第一种方法更干净,但可能会使会话管理软件等程序运行。第二种方法将关闭所有内容,但如果进程无法完全退出,则可能会强行执行。在任何一种情况下,请务必在继续之前保存您的工作。

Terminate Session Button

最后一点,虽然不是必需的,但可让我们进入XFCE的控制面板,导航到电源设置并禁用所有待机功能。如果您暂时不使用桌面,XFCE将尝试触发待机。虽然服务器在收到此请求时通常不会执行任何操作,但最好完全避免任何不可预见的行为。

结论

您现在拥有一个可操作的“云桌面”,具有始终在线,可远程访问的计算系统的所有优势。


参考文献:《How to Set Up a Remote Desktop with X2Go on Debian 8》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏埋名

专门为Github党打造的超级无敌Chrome插件

作为GitHub党,分享一些好用的Chrome插件,帮助增强Github功能。标题名称在Chrome插件商场搜索,即可安装对应的插件。

62630
来自专栏余生开发

cypress e2e 测试神器 安装使用及语法

cypress 我们直接去Cypress的官网,根据教程我们先进入我们项目的根目录,执行npm install cypress --save-dev,在安装完成...

28830
来自专栏从零开始学 Web 前端

基于Github&Hexo的个人博客搭建过程

在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

26630
来自专栏進无尽的文章

Fastlane| 一句代码完成自动打包发布到蒲公英

第一个选项的意思是:自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话) 第二个选项的意思是:自动发布beta版本用于TestFli...

20430
来自专栏魏艾斯博客www.vpsss.net

快云小助手网页版 Linux 面板安装过程记录

前几天老魏在快云小助手(快云管理助手)windows 服务器快速部署 web 环境中提到了体验景安快云提供的 web 面板,可以提供简单的服务器管理功能,同时老...

47470
来自专栏菩提树下的杨过

IntelliJ IDEA 13试用手记(附详细截图)

从去年开始转java以来,一直在寻找一款趁手的兵器,eclipse虽然是很多java程序员的首选,但是我发现一旦安装了一些插件,workspace中的项目达到数...

12630
来自专栏Fred Liang

Service Worker 实现 web 应用消息推送

Service Worker 是事件驱动的 worker,生命周期与页面无关,关联页面未关闭时,它也可以退出,没有关联页面时,它也可以启动.

71120
来自专栏PHP技术大全

grafana+ prometheus+php 监控系统实践

团队在开发流媒体服务,需要实现一个监控在线人数的功能,可以看到历史有多少人在线,当前有多少人在线的功能。 如果用mysql等关系型数据库来实现,可以用事件记录日...

32430
来自专栏散尽浮华

Ubuntu16.04下使用rdesktop命令远程连接windows机器

前段时间在本机安装了ubuntu16.04桌面版,后来需要远程连接一台win10系统的跳转机,下面介绍使用rdesktop命令远程连接windows机器的操作记...

14920
来自专栏岑志军的专栏

fastlane实现自动化打包

22020

扫码关注云+社区

领取腾讯云代金券