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