介绍
为了提高效率,安全性和从命令行完成所有操作的能力,许多服务器不使用图形用户界面(GUI)。
在运行 Linux 或其他 *nix 变体的远程计算机上与图形接口进行交互的典型解决方案是虚拟网络计算(VNC)。
相比之下,X2Go提供了几个优点:
*X2Go没有像VNC那样从远程机向你的计算机发送图像,而是使用X(图)服务器和X11协议的修改后版本来将客户端和服务器之间的数据交换量降到最低. 这使得您有近乎本地的桌面体验. 这种性能的唯一要求是客户端和服务器之间的网络距离并不太大. 从客户端机中拨打服务器时,往返时间不应超过100毫秒. 接近50米是最佳的,200米是可以接受的,但并不大。
- X2Go与您现有的SSH守护进程合作,加密客户端和服务器之间的所有流量,同时依赖于同样的经过良好测试的安全认证机制.
- X2Go不需要复杂的手动配置. 它知道如何设置会话,并自动启动XFCE,LXDE,MATE等受欢迎的桌面环境.
- 与VNC不同,X2Go在登录时设置了环境,因此不需要离开X服务器一直运行. 此外,你的会话即使在断开后仍会继续运行,这意味着当你重新连接时,你会发现你留下的东西,就像在本地桌面上一样.
- X2Go 支持多个登录会话,桌面,用户登录到自己的独立环境.
- 代替整个桌面环境,您可以在 X2Go 中启动单一的图形化应用程序,在利用服务器更强大的资源的同时节省您本地机器的资源,甚至一次离开远程运行数天的任务. (英语)
这样的设置是有用的,当:
您需要这种类型的桌面环境,但无法在本地安装基于Linux的操作系统。 *您正在旅行,但不能随身携带您的计算机。 *您的互联网服务提供商为您提供很少的带宽,但您需要访问数十或数百兆字节的数据。 *您需要一个单独的机器来工作几周或几个月一次。
在本教程中,我们建议 Debian 使用 Ubuntu,因为一些版本的 Ubuntu 默认 DE,Unity,不兼容 X2Go。
同样,我们建议XFCE,因为它不需要专用视频卡运行,这使得它更兼容X2Go,但LXDE,Mate(不允许编译),甚至更老的KDE,Unity和Cinnamon(有一些调整)也可以工作。
最后,Firefox—如果xrender**是活跃的(这是Debian 8的默认情况)—通常为X2Go提供了更顺畅的体验。
通过本教程工作后,你将有一个 Linux 桌面,你可以远程连接到它,它包含与你本地安装 Debian XFCE 相同的实用程序,此外,通过安装和配置防火墙,你将保护你的远程桌面,使其更难利用。
前提条件
在开始使用本教程之前,您将需要:
- 具有 1 或 2 GB 的 Debian 8 x64 实例 (1 GB 是最小的, 2 GB 是更安全的开始, 4 GB 是最优的)。
请记住,如果您耗尽了RAM,应用程序将被Linux内核终止,您可能会失去工作. 如果您知道或注意到您使用的程序需要大量的RAM,您可以关闭您的滴滴并根据需要调整尺寸。
步骤 1 — 防火墙服务器
安装整个桌面环境会带来大量的额外的软件依赖和建议,其中一些可能会尝试打开网络端口. 例如,许多DE中包含的Common UNIX打印系统(CUPS)可能会尝试打开端口631。 虽然像CUPS这样的服务在家中可能有用,我们不希望我们的服务器暴露在整个互联网上,所以阻止每个接入的连接是一个好主意。 唯一的例外将是端口22,将被打开,以便我们能够连接到SSH和X2Go。
为了保护我们的服务器,我们将使用不复杂的防火墙(UFW),因为它更不容易犯初学者的错误,更容易理解和管理,并且更好地符合我们只允许连接到一个端口的目标。
首先,安装 UFW:
1sudo apt-get install ufw
默认情况下,防火墙应该在此时处于不活跃状态,您可以检查:
1sudo ufw status verbose
结果应该是:
1[secondary_label Output]
2Status: inactive
在此时验证状态是很重要的,以避免锁定自己如果ufw
在我们阻止所有后来的连接时是活跃的。
如果 UFW 已激活,请用:
1sudo ufw disable
现在,设置默认防火墙规则以拒绝所有传入连接,并允许所有输出连接:
1sudo ufw default deny incoming
2sudo ufw default allow outgoing
并允许 SSH 连接到服务器(端口 22):
1sudo ufw allow 22
有了规则,让我们激活ufw
:
1sudo ufw enable
这将产生:
1[secondary_label Output]
2Command may disrupt existing ssh connections. Proceed with operation (y|n)?
输入y
并按ENTER
来激活防火墙。
如果您遇到问题并发现 SSH 访问被阻止,您可以按照 如何使用 DigitalOcean 控制台访问您的 Droplet来恢复访问。
有了我们的防火墙,我们的服务器只有一个入口点,我们已经准备好为 X2Go 服务器安装图形环境。
步骤 2 — 安装桌面环境
在本教程中,您将安装 XFCE 桌面环境. 有两种方法可以做到这一点,但您只需要选择一个 **或最小桌面环境或完整桌面环境。
最小桌面环境:如果您想安装一个小型的核心套件,然后通过手动添加您需要的任何东西来建立它们,您可以使用 xfce4
metapackage。
一个元包不包含自己的软件,它只是取决于安装的其他包,允许一整套包同时安装,而无需在命令行中单独输入每个包名称。
安装xfce4
和支持它所需的所有额外依赖:
1sudo apt-get install xfce4
** 完整的桌面环境:** 如果您不希望手动选择您需要的每个组件,而更愿意预先安装一个默认的包集,如单词处理器,网页浏览器,电子邮件客户端和其他配件,那么您可以选择task-xfce-desktop
。
安装并配置一个完全的桌面环境,类似于您在本地 PC 上从可启动 DVD 获得的 Debian XFCE:
1sudo apt-get install task-xfce-desktop
现在我们的图形环境已安装和配置,我们需要设置一种方式来从另一台计算机上查看它。
步骤 3 — 在服务器上安装 X2Go
X2Go配备了两个主要组件:服务器,在远程机器上启动和管理图形会话,以及客户端,我们在本地计算机上安装,以查看和控制远程桌面或应用程序。
由于 Debian 没有将 X2Go 服务器纳入其默认存储库,我们必须在包管理器配置中添加一个额外的存储库。
首先,导入 X2Go 的开发者的公共密钥,这是一个安全措施,以确保我们只能下载和安装使用他们的私钥正确签名的软件包。
1sudo apt-key adv --recv-keys --keyserver keys.gnupg.net E1F958385BFE2B6E
现在,将存储库添加到包管理器的配置文件:
1echo 'deb http://packages.x2go.org/debian jessie main' | sudo tee /etc/apt/sources.list.d/x2go.list
这会创建/etc/apt/sources.list.d/x2go.list
文件,并将deb http://packages.x2go.org/debian jessie main
字段添加到该文件中,告诉包管理器在哪里找到补充包。
若要更新可用的软件包的数据库,请输入以下命令:
1sudo apt-get update
最后,在服务器上安装 X2Go:
1sudo apt-get install x2goserver x2goserver-xsession
但是,请记住,由于SSH密码身份验证被禁用以增强安全性,您需要在您想要登录的任何机器上使用您的SSH私钥。
我们现在已经完成了服务器的设置,可以键入退出
或关闭终端窗口,其余的步骤将集中在您的本地机器的客户端上。
步骤 4 —本地安装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 客户端:
1[environment local]
2sudo apt-get install x2goclient
如果您想了解更多有关客户的信息,或者想从源头构建,您可以访问 X2Go的官方文档。
现在桌面客户端已安装,我们可以配置其设置,并连接到X2Go服务器以使用我们的远程XFCE桌面。
步骤 5 — 连接到远程桌面
当您第一次打开 X2Go 客户端时,应显示以下窗口. 如果不是,请在左上方菜单中单击 ** 会话**,然后选择 ** 新会话...**。
在 ** 会话名称** 字段中,输入一些帮助区分服务器的东西,如果您计划连接到多个机器时,这可能特别有用,因为您保存设置后,所有名称将在程序的主要窗口中列出。
输入您的服务器的 IP 地址或主机名称在 ** 服务器 ** 下的 ** 主机** 字段中。
在 ** 登录** 字段中输入您用于 SSH 连接的用户名。
而且,因为这是我们在第二步安装的,所以选择XFCE
作为您的 ** 会话类型**。
最后,因为我们使用 SSH 密钥登录服务器,请单击使用 RSA/DSA 密钥用于 ssh 连接
旁边的文件夹图标,然后浏览您的私钥。
其余的默认设置应该是足够的,但随着您熟悉软件,您可以根据您的个人偏好精心调节客户端。
按下 OK按钮后,您可以通过点击屏幕右上方包含您的会话名称的白色框开始您的图形会话。
在几秒钟内,您的远程桌面将显示,您可以开始与其交互。在首次登录时,XFCE将询问您是否想要 使用默认配置或 一个空板。第一个选项将创建一个位于屏幕底部的直角面板,其中包含一些有用的应用程序捷径(例如文件管理器,终端模拟器,浏览器等)。
除非您已经熟悉 XFCE,否则选择一个空板可能更为复杂,因为您将从零开始。
此外,在基于Windows和Linux的操作系统上,您可以使用一些有用的键盘快捷键来获得更好的体验:
CTRL+ALT+F
将打开和关闭全屏模式,在全屏模式下工作可以更像是一个本地桌面体验,此外,其他键盘捷径将被远程操作系统抓住,而不是本地操作系统。
CTRL+ALT+M
将最大限度地减少远程视图,即使您处于全屏模式
CTRL+ALT+T
会从会话中断开连接,但会让GUI在服务器上运行,这只是一个快速的方式来断开连接,而不需要登录或关闭服务器上的应用程序。
最后,有两种方式可以结束远程会话,关闭所有运行在其中的图形程序. 您可以从XFCE的 start菜单远程登录,或者您可以点击屏幕主要部分右下角的按钮标记为一个圆圈和一个小行(如电源/待机图标)。
第一种方法更清洁,但可能会让程序如会话管理软件运行。第二种方法会关闭一切,但如果一个过程无法清洁退出,可能会强行这样做。
最后,虽然不需要,但让我们进入XFCE的控制面板,导航到电源设置并禁用所有待机功能. 如果您暂时不使用桌面,XFCE将尝试触发待机。
结论
您现在拥有一个工作云桌面
,具有始终在线,可远程访问的计算系统的所有优点。
要更进一步,您可以通过 创建 git 存储库,安装像 Eclipse 这样的远程代码编辑器,或 配置 Web 服务器来集中开发工作来测试 Web 应用程序。
如果您想了解更多信息,请访问 X2Go的官方文档网站。