跳至内容

如何通过 GUI 访问我的 EC2 macOS 实例?

3 分钟阅读
0

我在专属主机上有一个 Amazon Elastic Compute Cloud (Amazon EC2) macOS 实例。我想通过图形用户界面 (GUI) 访问该实例。

解决方法

以下步骤已在 macOS Ventura 13.7.5、macOS Sonoma 14.7.5 和 macOS Sequoia 15.4.1 上进行了测试。

**重要事项:**即使您处于远程会话中,也要运行 SSH 会话。

连接到您的 EC2 macOS 实例

使用 SSH 连接到您的 Amazon EC2 macOS 实例。

Linux

要使用 SSH 以 ec2-user 身份连接到您的 EC2 macOS 实例,请运行以下命令:

ssh -i keypair_file ec2-user@Instance-Public-IP

**注意:**请将 keypair_file 替换为您的密钥对,将 Instance-Public-IP 替换为您的实例的公共 IP 地址。

Windows

Windows 10 及更高版本默认安装了 OpenSSH 客户端。要激活 OpenSSH 客户端,请完成以下步骤:

  1. 选择 Settings(设置)。
  2. 选择 Apps(应用程序),然后选择 Apps & features(应用程序和功能)。
  3. 选择 Manage optional features(管理可选功能)。
  4. 选择 Add a feature(添加功能),然后选择 OpenSSH Client(OpenSSH 客户端)。如果您使用的是较早版本的 Windows,请使用 Git Bash 运行以下命令:
    ssh -i keypair_file ec2-user@Instance-Public-IP

**注意:**当实例位于公共子网中时,您可以通过公共 IP 地址或弹性 IP 地址来访问该实例。要通过私有 IP 地址连接该实例,请使用堡垒机或跳转服务器。或者,使用 AWS VPN 或 AWS Direct Connect 通过私有 IP 地址与您的实例建立连接。最佳做法是使用 SSH 将流量通过隧道传输到 macOS 屏幕共享服务。另外,最好也不要在安全组中打开 VNC 端口。

安装 macOS 屏幕共享 SSH

要从 macOS 实例安装并启动 macOS 屏幕共享 SSH,请运行以下命令:

sudo launchctl enable system/com.apple.screensharing
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist

要为 ec2-user 设置密码,请运行以下命令:

sudo passwd ec2-user

确认操作系统 (OS) 正在侦听端口 5900:

sudo lsof -i -n -P | grep TCP | grep 5900

端口 5900 是 VNC 服务器的默认端口。

预期输出:

launchd 1 root 15u IPv6 0xa78dfebd53aa990a 0t0 TCP *:5900 (LISTEN)
launchd 1 root 16u IPv4 0x7a1b35dd60e49ee6 0t0 TCP *:5900 (LISTEN)
launchd 1 root 19u IPv6 0xa78dfebd53aa990a 0t0 TCP *:5900 (LISTEN)
launchd 1 root 20u IPv4 0x7a1b35dd60e49ee6 0t0 TCP *:5900 (LISTEN)

退出会话。

通过 GUI 连接到您的实例

您可以通过本地主机或实例的公共 IP 地址/DNS 连接到 GUI。

使用本地主机

**注意:**在连接到 GUI 之前,您可能需要关闭本地 Mac 计算机上的屏幕共享。这是因为本地计算机的屏幕共享和 Amazon EC2 连接都会尝试使用端口 5900,这会引起冲突。要关闭屏幕共享,请依次选择 System Preferences(系统偏好设置)和 General(通用),然后选择 Screen Sharing(屏幕共享)。将屏幕共享设置为 OFF(关闭)。

完成以下步骤:

  1. 要创建到 VNC 端口的 SSH 隧道,请运行以下命令:
    ssh -i keypair_file -L 5900:localhost:5900 ec2-user@Instance-Public-IP
    **注意:**请将 keypair_file 替换为您的 SSH 密钥路径。将 Instance-Public-IP 替换为您的实例的 IP 地址或 DNS 名称。或者,如果您通过私有网络连接,则也可以使用您的私有 IP 地址。
  2. 使用 VNC 客户端连接到 localhost:5900
    macOS
    macOS 内置有 VNC 客户端。要访问 VNC 查看器,请打开 Finder,选择 Go(开始),然后选择 Connect to Server(连接到服务器)。或者,使用键盘快捷键CMD + K,然后在 Server Address(服务器地址)中输入 vnc://localhost:5900
    Windows
    您可以使用第三方 VNC 客户端,例如 RealVNC Viewer。如果您使用 RealVNC Viewer 客户端,请从 File(文件)下拉列表中选择 New Connection(新连接)。对于 VNC Server: localhost:5900 Encryption: Let VNC Server Choose(VNC 服务器:localhost:5900 加密:让 VNC 服务器选择),选择 OK(确定)。对于其他客户端(例如 Windows 上的 TightVNC),此解决方案不适用。
    **注意:**当连接到 RealVNC Viewer 时,您可能会遇到身份验证错误。要解决此问题,请将 Encryption(加密)设置从 Prefer On(首选开启)更改为 Prefer Off(首选关闭),或从 Prefer Off(首选关闭)更改为 Prefer On(首选开启)。
    Linux
    您可以使用第三方 VNC 客户端,例如 Remmina。要下载该工具,请参阅 Remmina 网站上的 How to install Remmina(如何安装 Remmina)

使用公共 IP 地址或 DNS

如果您不想在 Mac 上启用屏幕共享,请使用公共 IP 地址或 DNS 通过 GUI 连接到实例。

运行以下命令:

ssh -i keypair_file ec2-user@Instance-Public-IP

然后,按照“本地主机”部分中的步骤 2 进行操作,以访问 VNC Viewer 并进行连接:

vnc://Instance-Public-IP:5900 or vnc://Instance-DNS-address:5900

**注意:**要通过公共 IP 地址进行连接,请在安全组规则中允许端口 5900。

在 macOS GUI 启动后,请使用您创建的新密码以 ec2-user 身份连接到 macOS 实例的远程会话。

相关信息

如何在运行 Amazon Linux 2 的 Amazon EC2 实例上安装 GUI?

使用 SSH 或 GUI 连接到 Mac 实例

GitHub 网站上的 amazon-ec2-mac-getting-started

AWS 官方已更新 5 个月前