如何在运行 Amazon Linux 2 的 Amazon EC2 实例上安装 GUI?
上次更新日期:2022 年 8 月 4 日
我想在运行 Amazon Linux 2 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例中安装图形用户界面 (GUI)。应如何操作?
简短描述
在继续之前,请先考虑以下替代方法之一来手动安装 GUI:
- 从预装了 MATE 的 Amazon Linux 2 AMI 启动。有关详细信息,请参阅配置 Amazon Linux 2 MATE 桌面连接。
- 开始使用 Amazon WorkSpaces,这是一项完全托管的持久桌面虚拟化服务。有关更多信息,请参阅 Amazon WorkSpaces。
- 开始使用 NICE DCV,这是一种远程显示协议,可将远程桌面和应用程序安全地从任何云或数据中心传输到任何设备。有关更多信息,请参阅 NICE DCV。
如果要继续手动 GUI 安装,请执行以下操作:
- 安装 MATE 桌面环境,这是一个基于 GNOME 2 的轻量级 GUI,可作为 Amazon Linux 2 的额外功能提供。有关 MATE 的更多信息,请参阅 MATE 桌面环境网站。
- 安装虚拟网络计算 (VNC) 服务,例如 TigerVNC。有关 TigerVNC 的更多信息,请参阅 tigervnc.org 网站。
- 使用 VNC 连接到 GUI。
- (可选)关闭 VNC 的密码身份验证
- (可选)安装 Web 浏览器,例如 Firefox 或 Chromium。有关 Chromium 的更多信息,请参阅 chromium.org 网站。有关 Firefox 的更多信息,请参阅 mozilla.org 网站。请注意,Chromium 和 Firefox 仅在 X86 版本中可用。
注意:这些说明仅适用于 Amazon Linux 2。要确认您正在运行的版本,请运行以下命令:
$ grep PRETTY_NAME /etc/os-release
PRETTY_NAME="Amazon Linux 2"
有关通过 GUI 访问 EC2 macOS 实例的说明,请参阅如何通过 GUI 访问我的 Amazon EC2 Mac 实例?
解决方法
开始之前
此实例必须位于公有子网中,并可通过公有 IP 地址或弹性 IP 地址访问。或者,您可以使用 AWS VPN 或 AWS Direct Connect 建立一个连接,可让您通过私有 IP 访问您的实例。这些说明不适用于使用堡垒主机的环境。出于安全原因,将使用 SSH 为到 VNC 服务器的流量建立隧道。此为避免在您的安全组中开放 VNC 端口的最佳实践。
2. 运行 sudo yum update 更新您的实例,然后重启实例。如果不更新并重启实例,可能会导致执行以下这些步骤时出现无法预测的结果。
安装 MATE 桌面环境
1. 安装 MATE 软件包。
sudo amazon-linux-extras install mate-desktop1.x
2. 将 MATE 定义为所有用户的默认桌面。
sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop'
安装 TigerVNC
1. 安装 TigerVNC 服务器:
sudo yum install tigervnc-server
2. 为此用户配置一个包含 6 到 8 个字符的 VNC 专用密码。如果系统询问您是否想要输入一个仅限查看的密码,请按“n”。
vncpasswd
3. 限制对本地主机的 VNC 网络访问,以便只能通过安全的 SSH 隧道访问 VNC。
创建 tigervnc 配置目录:
sudo mkdir /etc/tigervnc
创建一个包含 localhost 选项的强制配置文件:
sudo bash -c 'echo localhost > /etc/tigervnc/vncserver-config-mandatory'
4. 在显示编号为 1 的显示器上启动 VNC 服务器,并使其始终在系统启动时启动。
创建新的 systemd 单元。
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service
使用 sed 命令将新单元的所有 USER 替换为 ec2-user。
sudo sed -i 's/<USER>/ec2-user/' /etc/systemd/system/vncserver@.service
重新加载 systemd 管理器配置。
sudo systemctl daemon-reload
打开该服务。
sudo systemctl enable vncserver@:1
启动该服务。
sudo systemctl start vncserver@:1
使用 VNC 连接到 GUI
1. 在您的本地计算机上安装 TigerVNC 软件(如果尚未安装)。TigerVNC 可用于 Linux、Windows 和 macOS。如要下载,请访问 TigerVNC 网站。
Linux: tigervnc 软件包在许多发行版的存储库中都可用,并且可以使用各自的软件包管理器进行安装。macOS:下载并安装 TigerVNC-x.y.z.dmg,其中 x.y.z 代表最新版本。
Windows:下载并安装 tigervnc64-x.y.z.exe(64 位)或 tigervnc-x.y.z.exe(32 位),其中 x.y.z 代表最新版本。
2. 在本地计算机上,使用 SSH 连接到您的实例,创建隧道,将本地端口 5901/TCP(VNC) 上的所有流量转发至实例的 VNC 服务器:
Linux 和 macOS
使用 SSH 连接到您的实例时,请添加-L 参数以激活端口转发。将 PEM_FILE 替换为您的私有密钥,并视情况将 INSTANCE_IP 替换为您实例的公有或私有 IP。
ssh -L 5901:localhost:5901 -i PEM_FILE ec2-user@INSTANCE_IP
Windows
使用 PuTTY 打开连接时,配置端口转发,然后打开连接:
- 从连接菜单中,选择 SSH,然后选择隧道。
- 在源端口字段中输入 5901。
- 在 Destination(目的地)字段中输入 localhost: 5901。
- 选择 Add(添加)。
3. 在本地计算机上打开 TigerVNC 查看器。当系统要求输入 VNC 服务器主机名时,输入 localhost:1,然后与其连接。
4. 输入您在安装 TigerVNC 内容第 2 步中设置的 VNC 密码。如果出现警告提示该连接不安全,请忽略它。您正在使用加密的 SSH 隧道访问 VNC 服务器。
您的 MATE 桌面环境将出现。
(可选)关闭 VNC 的密码身份验证
关闭 VNC 密码身份验证不是最佳实践。能够通过 SSH 连接到您的实例的任何用户都可以创建隧道并访问您的 VNC 桌面。如果这是单用户实例(也就是说,没有其他人可以登录),并且您仍想关闭 VNC 的密码身份验证,请按照下列步骤操作:
1. 将 VNC 服务器的安全类型设置更改为无:
echo SecurityTypes=None >> ~/.vnc/config
2. 重新启动 VNC 服务器。
sudo systemctl restart vncserver@:1
(可选)安装 Web 浏览器(仅适用于 X86)
AWS 不在 Amazon Linux 2 存储库中提供 Chromium 或 Firefox 等 Web 浏览器。要安装此类浏览器之一,请执行以下这些步骤。请注意,AWS 不支持从第三方源安装的软件。
以下说明适用于基于 64 位 Intel 和 AMD 处理器 (x86_64) 的 EC2 实例。这些第三方源不会为基于 Graviton 处理器 (aarch64) 的实例提供 Web 浏览器。要确认实例的架构,请运行以下命令:
$ uname -m
x86_64
要安装 Chromium(Google Chrome 的开源版本),请执行以下操作:
1. 激活 EPEL 存储库。请参阅 Fedoraproject.org 网站上的 EPEL 文档,了解更多信息。
sudo amazon-linux-extras install epel
2. 安装 Chromium 程序包。
sudo yum install chromium
将 Chromium 安装到 Applications(应用程序)、Internet(互联网)、Chromium Web Browser(Chromium Web 浏览器)下的 MATE 上。
要安装 Mozilla Firefox(仅限当前用户),请执行以下操作:
1. 将适用于 Linux 64 位的最新版本 Firefox 下载到本地计算机。如要下载,请访问 mozilla.org 网站。
2. 下载 Firefox 后,将文件复制到您的实例。有关说明,请参阅 Linux 和 Windows 各自的网站。
3. 使用 SSH 连接到您的 EC2 实例。
4. 提取文件内容。此示例命令表示该文件位于 ec2-user 的主目录中。根据需要更改路径和 Firefox 版本。
tar jxf ~/firefox-xx.y.tar.bz2 -C ~/
5. 使用 vim 或您偏好的编辑器,创建一个桌面图标。创建文件 ~/Desktop/Firefox.desktop,其内容如以下示例所示。
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Icon=/home/ec2-user/firefox/browser/chrome/icons/default/default128.png
Icon[en_US]=/home/ec2-user/firefox/browser/chrome/icons/default/default128.png
Name[en_US]=Firefox
Exec=/home/ec2-user/firefox/firefox
Comment[en_US]=Firefox web browser
Name=Firefox
Comment=Firefox web browser
GenericName[en_US.UTF-8]=Firefox web browser
Categories=Network;WebBrowser;
6. 使用您在步骤 5 中创建的桌面图标启动 Firefox。
7. 如果出现有关应用程序启动器未被标记为受信任的提示,请单击“标记为受信任”,然后再次双击以打开 Firefox。