如何在Debian8上使用X2Go设置远程桌面
介绍
出于效率、安全性和从命令行执行所有操作的能力,许多服务器不使用图形用户界面 (GUI)。 但是,有时您希望在远程服务器上运行 GUI 应用程序,例如当您在浏览器中测试网站时,或者您希望设置具有完整桌面环境 (DE) 的远程访问工作站时。
在运行 Linux 或其他 *nix 变体的远程计算机上与图形界面交互的典型解决方案是虚拟网络计算 (VNC)。 不幸的是,VNC 在默认情况下是出了名的缓慢、不安全,并且需要大量手动配置才能启动和运行。
相比之下,X2Go 提供了几个优势:
- X2Go 不像 VNC 那样将图像从远程机器发送到您的计算机,而是使用 X(图形)服务器和 X11 协议的修改版本来最小化客户端和服务器之间交换的数据量。 这为您提供了接近本地的桌面体验。 对这种性能的唯一要求是客户端和服务器之间的网络距离不能太大。 从客户端机器 ping 服务器时,往返时间不应超过 100 毫秒。 接近 50 毫秒是最佳的,200 毫秒是可以接受的,但不是很好。
- X2Go 与您现有的 SSH 守护程序一起工作,加密客户端和服务器之间的所有流量,同时依赖于相同的经过充分测试和安全的身份验证机制。
- X2Go 不需要复杂的手动配置。 它知道如何设置会话并自动启动流行的桌面环境,如 XFCE、LXDE、MATE 等。
- 与 VNC 不同,X2Go 在您登录时设置环境,因此您无需让 X 服务器一直运行。 此外,即使在您断开连接后,您的会话也会继续运行,这意味着当您重新连接时,您会在离开时找到所有内容,就像在本地桌面上一样。
- X2Go 支持多个登录会话、桌面和用户登录到各自独立的环境。
- 您可以在 X2Go 中启动单个图形应用程序,而不是整个桌面环境,从而节省本地计算机的资源,同时利用服务器更强大的资源,甚至可以让任务一次远程运行数天。
这种设置在以下情况下很有用:
- 您需要这种类型的桌面环境,但无法在本地安装基于 Linux 的操作系统。
- 您要去旅行,但不能随身携带计算机。
- 您的 Internet 服务提供商为您提供的带宽很少,但您需要访问数十或数百 GB 的数据。
- 您需要一台单独的机器一次工作数周或数月。
- 您正在与一个团队合作,每个人都需要访问一个远程桌面。
- 您需要图形桌面、高速互联网、可靠的电源以及快速扩展和缩减资源的能力。
在本教程中,我们推荐 Debian 而不是 Ubuntu,因为 Ubuntu 的默认 DE Unity 的某些版本与 X2Go 不兼容。 而且,替代桌面环境有时可能会在 Ubuntu 上出现问题。
同样,我们推荐 XFCE,因为它不需要专用视频卡即可运行,使其与 X2Go 更兼容。 但是,LXDE、Mate(禁用合成),甚至更旧的 KDE、Unity 和 Cinnamon(经过一些调整)也可以工作。
最后,Firefox——如果 xrender 处于活动状态(在 Debian 8 中是默认设置)——通常会提供更流畅的 X2Go 体验。
完成本教程后,您将拥有一个可以远程连接的 Linux 桌面,其中包含与本地安装 Debian XFCE 完全相同的实用程序。 此外,通过安装和配置防火墙,您将保护您的远程桌面,使其更难被利用。
先决条件
在开始学习本教程之前,您需要:
- 具有 1 或 2GB RAM 的 Debian 8 x64 实例。 (1GB 最小,2GB 更安全,4GB 最佳)。 选择一个尽可能靠近您打算连接的区域的服务器位置。
- 具有 sudo 权限的用户; 遵循本指南将帮助您入门:使用 Debian 8 进行初始服务器设置。
请记住,如果您的 RAM 用完,应用程序将被 Linux 内核终止,您可能会丢失您的工作。 如果您知道或注意到您使用的程序需要大量 RAM,您可以关闭您的 droplet 并根据需要调整大小。
第 1 步 — 为服务器设置防火墙
安装整个桌面环境会引入许多额外的软件依赖项和建议,其中一些可能会尝试打开网络端口。 例如,许多 DE 中包含的通用 UNIX 打印系统 (CUPS) 可能会尝试打开端口 631。 虽然像 CUPS 这样的服务在家里可能很有用,但我们不希望我们的服务器暴露在整个 Internet 中,因此阻止每个传入连接是一个好主意。 唯一的例外是端口 22,它将保持打开状态,以便我们能够连接 SSH 和 X2Go。
为了保护我们的服务器,我们将使用简单防火墙 (UFW),因为它不易出错,更易于理解和管理,并且更符合我们只允许连接到一个端口的目标。 iptables 和其他更复杂的防火墙更适合需要更精细细节的高级和复杂规则。 (参见 UFW Essentials: Common Firewall Rules and Commands 获取常用命令的快速参考指南。)
首先,安装UFW:
sudo apt-get install ufw
默认情况下,此时防火墙应该处于非活动状态。 您可以通过以下方式检查:
sudo ufw status verbose
结果应该是:
OutputStatus: 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
这将输出:
OutputCommand may disrupt existing ssh connections. Proceed with operation (y|n)?
键入 y
并按 ENTER
以激活防火墙。
如果您遇到问题并发现 SSH 访问被阻止,您可以按照 如何使用 DigitalOcean 控制台访问您的 Droplet 来恢复访问。
安装好防火墙后,我们的服务器只有一个入口点,我们已准备好为 X2Go 服务器安装图形环境。
第 2 步 — 安装桌面环境
在本教程中,您将安装 XFCE 桌面环境。 有两种方法可以实现,但您只需要选择一个—最小桌面环境或完整桌面环境。
最小桌面环境:如果你想安装一个小的核心包集,然后通过手动添加你需要的任何东西来构建它们,你可以使用 xfce4
元包。
元包不包含自己的软件,它仅依赖于要安装的其他包,允许一次安装整个包集合,而无需在命令行中单独键入每个包名称。
安装 xfce4
以及支持它所需的所有其他依赖项:
sudo apt-get install xfce4
完整的桌面环境: 如果您不想手工挑选所需的每个组件,而是希望拥有一组默认的软件包,例如文字处理器、网络浏览器、电子邮件客户端和其他预装配件,然后你可以选择task-xfce-desktop
。
安装和配置一个完整的桌面环境,该环境类似于您在本地 PC 上的可引导 DVD 中使用 Debian XFCE 获得的环境:
sudo apt-get install task-xfce-desktop
现在我们的图形环境已经安装并配置好了,我们需要设置一种从另一台计算机上查看它的方法。
第 3 步 — 在服务器上安装 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
并向其中添加 deb http://packages.x2go.org/debian jessie main
行,告诉包管理器在哪里可以找到补充包。
要刷新可用软件包的数据库,请输入以下命令:
sudo apt-get update
最后,在服务器上安装 X2Go:
sudo apt-get install x2goserver x2goserver-xsession
此时,您的服务器上不需要进一步设置。 但是,请记住,由于禁用 SSH 密码身份验证以提高安全性,因此您需要在要登录的任何计算机上使用 SSH 私钥。
我们现在已经完成了服务器的设置,可以输入 exit
或关闭终端窗口。 其余步骤将集中在本地计算机的客户端上。
第 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 客户端:
sudo apt-get install x2goclient
如果您想了解有关客户端的更多信息或想从源代码构建,可以访问 X2Go 的官方文档 。
现在桌面客户端已安装,我们可以配置其设置并连接到 X2Go 服务器以使用我们的远程 XFCE 桌面。
第 5 步 — 连接到远程桌面
当您第一次打开 X2Go 客户端时,应该会出现以下窗口。 如果没有,请单击左上角菜单中的 Session,然后选择 New session ...。
在 会话名称 字段中,输入有助于区分服务器的内容。 如果您计划连接到多台机器,这可能特别有用,因为一旦您保存设置,所有名称都将列在程序的主窗口中。
在 Server 下的 Host 字段中输入服务器的 IP 地址或主机名。
在 Login 字段中输入您用于 SSH 连接的用户名。
而且,由于它是我们在第二步中安装的,所以选择 XFCE
作为您的 Session type。
最后,因为我们使用 SSH 密钥登录服务器,所以单击 Use RSA/DSA key for ssh connection 旁边的文件夹图标并浏览到您的私钥。
其余的默认设置现在就足够了,但是随着您对软件的熟悉,您可以根据您的个人喜好微调客户端。
按下 OK 按钮后,您可以通过单击屏幕右上角包含会话名称的白框来启动图形会话。
几秒钟后,您的远程桌面将显示出来,您可以开始与之交互。 首次登录时,XFCE 会询问您是要使用默认配置还是一个空面板。 第一个选项将创建一个停靠在屏幕底部的矩形面板,其中包含一些有用的应用程序快捷方式(例如 文件管理器、终端仿真器、浏览器等)。 此选项还将向桌面添加一个顶部面板,其中包括应用程序启动器、时钟、关机菜单等实用程序。
除非您已经熟悉 XFCE,否则选择空面板可能会更加复杂,因为您将从头开始。 不会有任务栏,没有时钟,没有预配置的开始菜单; 您可以自行将所有内容添加到空面板中。
此外,在基于 Windows 和 Linux 的操作系统上,您可以使用一些有用的键盘快捷键来获得更好的体验:
CTRL+ALT+F
将打开和关闭全屏模式。 在全屏模式下工作感觉更像是本地桌面体验。 另外,其他键盘快捷键将被远程操作系统而不是本地操作系统获取。
CTRL+ALT+M
将最小化远程视图,即使您处于全屏模式
CTRL+ALT+T
将断开与会话的连接,但让 GUI 在服务器上运行。 这只是一种无需注销或关闭服务器上的应用程序即可快速断开连接的方法。 如果您单击窗口的关闭按钮,也会发生同样的情况。
最后,有两种方法可以结束远程会话,关闭其中运行的所有图形程序。 您可以从XFCE的开始菜单远程注销,也可以点击屏幕主体右下角的圆圈和小线(如电源/待机图标)的按钮.
第一种方法更简洁,但可能会使会话管理软件等程序运行。 第二种方法将关闭所有内容,但如果进程无法完全退出,则可能会强制执行此操作。 无论哪种情况,请务必在继续之前保存您的工作。
最后一点,虽然不是必需的,但让我们进入 XFCE 的控制面板,导航到电源设置并禁用所有待机功能。 如果您有一段时间不使用桌面,XFCE 将尝试触发待机。 虽然服务器在收到此请求时通常不会做任何事情,但最好完全避免任何不可预见的行为。
结论
您现在拥有一个工作的“云桌面”,具有始终在线、可远程访问的计算系统的所有优势。
更进一步,您可以通过 创建 git 存储库 、安装远程代码编辑器(如 Eclipse)或 配置 Web 服务器 来测试 Web 应用程序来集中您的开发工作。 您还可以将远程桌面与 一个良好的备份方案 相结合,以确保您的工作环境在任何地方都可用,并且不会丢失数据。
如果您想了解更多信息,请访问 X2Go 的官方文档网站。