AWS LINUX2 GUI(有天坑)

Posted on   Xiao傅  阅读(283)  评论(1编辑  收藏  举报

如何在运行 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 安装,请执行以下操作:

  1. 安装 MATE 桌面环境,这是一个基于 GNOME 2 的轻量级 GUI,可作为 Amazon Linux 2 的额外功能提供。有关 MATE 的更多信息,请参阅 MATE 桌面环境网站
  2. 安装虚拟网络计算 (VNC) 服务,例如 TigerVNC。有关 TigerVNC 的更多信息,请参阅 tigervnc.org 网站
  3. 使用 VNC 连接到 GUI。
  4. (可选)关闭 VNC 的密码身份验证
  5. (可选)安装 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 实例?

解决方法

开始之前

1.    使用 SSH 以 EC2-用户身份连接到您的实例

此实例必须位于公有子网中,并可通过公有 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' #此为天坑,localhost加了后只响应本地的remote请求。

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 打开连接时,配置端口转发,然后打开连接:

  1. 从连接菜单中,选择 SSH,然后选择隧道。
  2. 在源端口字段中输入 5901。
  3. 在 Destination(目的地)字段中输入 localhost: 5901。
  4. 选择 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
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示