如何在运行 Amazon Linux 2 的 Amazon EC2 实例上安装 GUI?
我想在运行 Amazon Linux 2 (AL2) 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上安装图形用户界面 (GUI)。
简短描述
要在 Linux 上运行图形应用程序,您需要一个桌面环境。默认情况下,标准的 AL2 亚马逊机器映像 (AMI) 未安装桌面环境。使用 AL2 Extras Library 安装 MATE 桌面环境。有关详细信息,请参阅 MATE 网站上的 MATE 桌面环境。
或者,从预装了 MATE 的 AL2 AMI 启动实例。有关详细信息,请参阅配置 AL2 MATE 桌面连接。您还可以在 Amazon WorkSpaces 上使用虚拟桌面来运行 AL2、Ubuntu Linux、Rocky Linux、Red Hat Enterprise Linux (RHEL) 或 Microsoft Windows。
**注意:**以下解决方法适用于仅在 AL2 上运行的实例。不适用于 Amazon Linux 1 (AL1) 或 Amazon Linux 2023 (AL2023)。有关如何在 AL2023 中安装 GUI 的信息,请参阅“教程: 在 AL2023 上安装 GNOME 桌面环境”。在 AL2023 上配置 GUI 后,您可以在 AL2023 上配置 Tiger VNC 服务器以连接到 GUI。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
以下解决方法仅适用于 AL2。要查看您的 Linux 发行版名称和版本,请运行以下命令:
grep PRETTY_NAME /etc/os-release
对于使用堡垒机(跳转)实例连接到非公有子网中的其他 EC2 实例的环境,不能使用以下解决步骤。要安全地连接到没有直接互联网连接的 EC2 实例,请使用 EC2 实例连接端点或会话管理器(AWS Systems Manager 的一项功能)。或者,使用 AWS Site-to-Site VPN 或 AWS Direct Connect 在您的网络和 AWS 之间建立安全连接。
更新实例
最佳做法是在安装 GUI 之前更新和重启您的实例,以避免出现问题。
要更新实例,请完成以下步骤:
-
运行以下命令以更新您的实例:
sudo yum update -
重启实例。
安装 MATE 桌面环境
要安装 MATE 桌面环境,请完成以下步骤:
-
要安装 MATE 软件包,请运行以下命令:
sudo amazon-linux-extras install mate-desktop1.x -
要将 MATE 定义为所有用户的默认桌面环境,请运行以下命令:
sudo bash -c 'echo PREFERRED=/usr/bin/mate-session > /etc/sysconfig/desktop'
安装 VNC 服务器
安装虚拟网络计算 (VNC) 服务器,例如 TigerVNC,以访问远程图形桌面服务。有关 TigerVNC 的详细信息,请参阅 TigerVNC 网站上的 TigerVNC。
出于安全原因,以下配置不允许通过 TigerVNC 直接连接。相反,必须通过加密的 SSH 隧道来访问 GUI。最佳做法是不在安全组中打开 VNC 端口。
要安装 TigerVNC,请完成以下步骤:
-
要安装 TigerVNC 服务器,请运行以下命令:
sudo yum install tigervnc-server -
要为您的用户配置特定于 VNC 的密码,请运行以下命令:
vncpasswd**注意:**当终端询问是否要输入仅限查看的密码时,请按 n。未加密的密码会记录在主目录中的文件中。仅您的用户和根用户可以访问该文件。挑战响应机制可保护通过网络传输的密码。有关详细信息,请参阅 TigerVNC 网站上的 vncpasswd。您使用的 SSH 隧道通过更强的加密进一步保护连接。
-
要创建 tigervnc 系统范围的配置目录,请运行以下命令:
sudo mkdir /etc/tigervnc -
要阻止与 VNC 的直接连接,请运行以下命令:
sudo bash -c 'echo localhost > /etc/tigervnc/vncserver-config-mandatory' -
要为 TigerVNC 创建新的 systemd 单元,请运行以下命令:
sudo cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@.service -
要将新单元中出现的所有 <USER> 替换为您的用户名,请运行以下命令:
sudo sed -i 's/<USER>/'${USER}'/' /etc/systemd/system/vncserver@.service -
要重新加载 systemd 管理器配置,请运行以下命令:
sudo systemctl daemon-reload -
要在启动时激活 TigerVNC 服务,请运行以下命令:
sudo systemctl enable vncserver@:1 -
要启动 TigerVNC 服务,请运行以下命令:
sudo systemctl start vncserver@:1 -
要确认 TigerVNC 服务是否运行,请运行以下命令:
sudo systemctl status vncserver@:1
- 要确认 TigerVNC 是否正在侦听 TCP 端口 5901,请运行以下命令:
ss -lnp '( sport = :5901 )'
在本地计算机上安装 TigerVNC Viewer
TigerVNC Viewer 可用于 Windows、macOS 和 Linux。要下载该工具,请参阅 GitHub 上的 Releases(版本)。
根据您的操作系统 (OS),下载以下 TigerVNC Viewer 版本:
- 对于 Windows,请安装 tigervnc64-x.y.z.exe(64 位)或 tigervnc-x.y.z.exe(32 位)。
- 对于 macOS,请安装 TigerVNC-x.y.z.dmg。
**注意:**请将 x.y.z 替换为最新版本号。 - 对于 Linux,您可以在许多发行版的存储库中找到 TigerVNC 软件包。有关如何安装软件包的信息,请查看您的发行版说明。或者,从 GitHub 下载并安装相关的二进制文件。
访问 GUI
要访问 GUI,必须先从本地计算机连接到您的实例,并为 TCP 端口 5901 激活端口转发。此配置会为 VNC 流量创建一个加密的 SSH 隧道。然后,使用 VNC Viewer 连接到 GUI。
创建加密的 SSH 隧道
**重要事项:**确保本地计算机的防火墙允许通过 TCP 连接到端口 5901。
如果您使用 PuTTY 连接到您的实例,请在打开连接之前完成以下步骤:
- 在 Category(类别)导航窗格中,展开 Connection(连接),然后选择 SSH。
- 展开 SSH,然后选择 Tunnels(隧道)。
- 对于 Source Port(源端口),输入 5901。
- 对于 Destination(目标),输入 localhost:5901。
- 选择 Add(添加)。
如果您使用 SSH 客户端连接到您的实例,请运行以下命令以激活端口转发:
ssh -L 5901:localhost:5901 -i /path/key-pair-name.pem user@instance-dns-name
**注意:**请将 path 替换为您的密钥路径,将 key-pair-name 替换为私钥文件的名称。请将 user 替换为用户名,将 instance-dns-name 替换为您的实例的 DNS 名称或 IP 地址。AL2 的默认用户名为 ec2-user。
如果您使用 EC2 实例连接连接到您的实例,则必须运行以下 AWS CLI 命令 ec2-instance-connect 来激活端口转发:
aws ec2-instance-connect ssh --instance-id i-1234567890example --connection-type direct --local-forwarding 5901:localhost:5901
**注意:**请将 i-1234567890example 替换为您的实例 ID。如果您使用 EC2 实例连接端点,请将 direct 替换为 eice。
如果您使用会话管理器连接到您的实例,则必须启动会话管理器端口转发会话。对于本地和远程端口,请输入 5901。
使用 VNC Viewer 连接到 GUI
完成以下步骤:
- 在本地计算机上打开 TigerVNC Viewer。
- 对于 VNC server(VNC 服务器),输入 localhost:1,然后选择 Connect(连接)。
- 输入您的 VNC 密码。
**注意:**如果收到提示连接不安全的警报,请将其忽略。您正在通过自己创建的加密 SSH 隧道访问 VNC 服务器。
(可选)停用 VNC 的密码身份验证
**重要事项:**最佳做法是仅对单用户实例停用密码身份验证。关闭 VNC 密码身份验证后,任何可以登录到您的实例的用户都可以创建 SSH 隧道并访问您的 VNC 桌面。
要停用 VNC 的密码身份验证,请完成以下步骤:
-
运行以下命令,将 VNC 服务器的 Security Types(安全类型)设置更改为 None(无):
echo SecurityTypes=None >> ~/.vnc/config -
要重新启动 VNC 服务器,请运行以下命令:
sudo systemctl restart vncserver@:1
(可选)安装 Web 浏览器
AWS 在 AL2 存储库中不提供 Web 浏览器。但是,您可以安装 Web 浏览器,例如 Chromium Projects 网站上的 Chromium,或 Mozilla 网站上的 Firefox 浏览器。
**注意:**请注意,对于从第三方来源安装的软件,AWS 不提供支持。
以下安装步骤仅适用于基于 x86_64 架构(Intel 和 AMD 处理器)的实例。对于基于 aarch64 架构(AWS Graviton 处理器)的实例,不能使用以下解决方法。要查看您的实例的架构,请运行以下命令:
uname -m
安装 Chromium
完成以下步骤:
-
要激活 Extra Packages for Enterprise Linux (EPEL) 存储库,请运行以下命令:
sudo amazon-linux-extras install epel**注意:**有关详细信息,请参阅 Fedora Project 网站上的 Extra Packages for Enterprise Linux (EPEL)。
-
要安装 Chromium 软件包,请运行以下命令:
sudo yum install chromium -
在 MATE 桌面上,选择 Applications,然后选择 Internet。您可以找到以 Chromium Web Browser 列出的 Chromium。
安装 Firefox
**注意:**只能为当前用户安装 Firefox 浏览器。
要在 AL2 实例上为当前用户安装 Firefox,请完成以下步骤:
-
要下载适用于 64 位 Linux 的最新版本的 Firefox,请运行以下命令:
curl -L -o ~/firefox.tar.xz 'https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=en-US' -
要提取下载的文件内容,请运行以下命令:
tar Jxf ~/firefox.tar.xz -C ~/ -
要在桌面上创建 Firefox 快捷方式,请运行以下命令:
echo '[Desktop Entry] Version=1.0 Type=Application Terminal=false Icon=/home/ec2-user/firefox/browser/chrome/icons/default/default128.png Exec=/home/ec2-user/firefox/firefox Name=Firefox Comment=Firefox web browser GenericName=Firefox web browser Categories=Network;WebBrowser;' > ~/Desktop/Firefox.desktop -
使用桌面快捷方式启动 Firefox。
**注意:**如果您收到提示应用程序启动程序不受信任的消息,请选择 Mark as Trusted(标记为可信)。
相关信息
相关内容
AWS 官方已更新 2 年前
