在Amazon Linux 2安装Mate图形桌面并使用VNC远程连接

一、背景

Linux EC2用于GPU等场景下需要安装GUI图形桌面,常见的有KDE、Gnome、XFCE等。本文描述了如何在Amazon Linux 2上安装Mate图形桌面,并使用VNC远程连接。本文在中国区测试通过。

二、安装和配置

1、安装GUI和VNC

请确认系统是Amazon Linux 2系统,本文调用了Amazon Linux 2专用软件仓库,在CentOS7上是无法安装的。

注意:如下命令执行时候需要在ec2-user用户提示符下,不要sudo成root,因为后续安装脚本有很多是以ec2-user身份编写,使用root安装将直接报错无法启动服务。

执行如下命令。

sudo amazon-linux-extras install mate-desktop1.x -y
sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop'
echo "/usr/bin/mate-session" > ~/.Xclients && chmod +x ~/.Xclients
sudo yum install tigervnc-server -y
vncpasswd

现在界面将提示设置VNC Password。VNC Password分成管理员密码,和View-only只观看密码。这里我们设置一个管理员密码,并且停用View-only观看用户。输入密码时候注意复杂度,需要8位以上,含特殊字符,并输入两遍确认。输入两遍之后,当提示是否设置View-only密码时候,输入N,不设置观看用户。

设置效果如下截图。

至此安装完成。

2、初始化服务并设置自动启动

执行如下命令。

vncserver :1
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
sudo sed -i 's/<USER>/ec2-user/' /etc/systemd/system/vncserver@.service
sudo systemctl daemon-reload
sudo systemctl enable vncserver@:1
sudo systemctl start vncserver@:1

执行完毕效果如下。

至此初始化完成。

三、连接到VNC

1、下载客户端

VNC是开源协议,支持Windows、Linux、Unix,有多种客户端,常见的包括RealVNC、UltraVNC、TightVNC等。

以TightVNC为例,下载地址在这里。在这个网址上,Windows有直接下载客户端的提示,MacOS则需要下载“TightVNC Java Viewer”,这是一个Jar包,可以直接在MacOS运行,即可启动图形界面的VNC客户端。

此外,还可以使用MacOS自带的客户端。

2、直接使用公网IP和端口连接

上文启动的VNC服务器端运行在 :1 端口,这个含义是在VNC基础端口5900上的第一个用户桌面,因此连接端口就是5901。

从公网连接,需要去EC2控制台上,找到安全规则组,放行TCP协议5901端口,允许来自特定IP或者0.0.0.0/0的远程连接。(注意,设置为0.0.0.0不安全,尽量设置为本公司的固定出口IP地址)

然后启动VNC客户端,输入EC2对应的Public IP地址或者EIP,也就是公网P地址:5901即可登录。

3、使用SSH端口转发内网登录

注:方法2和方法3二选一即可。

使用SSH隧道映射是经常使用的一种安全手段,适合于防火墙仅开放了22端口的场景,包括一些办公网络,如AWS员工VPN办公网络,如北京联通部分光纤宽带,是限制了对公网IP 5901端口的访问。此时连接公网IP,将收到连接超时的错误。

解决办法是,设置SSH端口转发。以MacOS为例。先退出刚在安装软件的SSH远程连接,重新发器一个新的远程登录,参数如下。

ssh -L 5901:localhost:5901 -i EC2登录PEM证书文件 ec2-user@公网IP

请替换以上命令的证书和公网IP。执行命令后,SSH登录成功,界面上不会有任何额外的提示就是登录正常成功了。如下截图。

接下来就可以启动客户端登录了。回到MacOS上,用鼠标点击桌面,然后从任务栏上选择Go,从下拉框中找到 Connect to Server的按钮。这个快捷键是Command+K,也可以使用快捷键操作。如下截图。

在MacOS自带的客户端界面上,输入如下地址:

vnc://127.0.0.1:5901

此时还可以点击左下角的加号,将这个服务器地址保存下来,后续方便调用。如下截图。

随后会提示输入密码,此时输入前文配置vncpasswd时候设置的密码,即可正常连接。如下截图。

使用过程中需要注意,SSH不能中断,否则映射过来到本机127.0.0.1:5901的隧道就会中断,也就不能连接了。

为了使用方便,可以自行修改shell下的环境变量、alias等,实现比较友好的自动登录。也可以使用第三方SSH隧道管理工具,自动映射端口。

四、安装简单桌面软件

1、找到SSH Console

在Mate图形环境上,点击菜单,即可找到Console选项。如下截图。

2、安装Chromium浏览器等软件

执行如下命令安装浏览器。

sudo amazon-linux-extras install epel

执行本命令完毕后,要等待1分钟左右,等后台yum进程退出。然后在执行如下命令安装。

sudo yum install chromium -y

至此配置完成,具备图形界面和浏览器,可以继续其他配置操作。如下截图。

全文完。

四、参考文档

https://amazonaws-china.com/cn/premiumsupport/knowledge-center/ec2-linux-2-install-gui/