我可以使用哪些方法连接我的 EC2 Linux 实例?
我想知道有哪些选项可用于连接到我的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。
简短描述
连接 Amazon EC2 Linux 实例有四种方法:
- 安全外壳 (SSH)
- 适用于 Linux 实例的 EC2 Serial Console
- 会话管理器,AWS Systems Manager 的一项功能
- Amazon EC2 Instance Connect
解决方法
SSH
局限性:
- SSH 没有内置的连接日志记录和审核。
- AWS 为每个 EC2 实例部署单一密钥对,用于通过 SSH 进行身份验证。
- 密钥对一旦丢失,即无法再生。有关更多信息,请参阅如果我在 Amazon EC2 实例初次启动后丢失了 SSH 密钥对,如何连接到该实例?
**重要信息:**在连接到您的实例之前,请确保具备所有先决条件。
方法 1: 使用终端窗口
打开终端窗口(Linux 或 macOS),然后运行 SSH 命令连接到实例。
使用公共域名:
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
使用公共 IPv4 地址:
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-IPv4-address
使用公共 IPv6 地址:
ssh -i /path/key-pair-name.pem instance-user-name@instance-IPv6-address
有关详细信息,请参阅使用 SSH 连接到您的 Linux 实例。
方法 2: 在 Windows 上使用 OpenSSH
1.运行以下命令使用 PowerShell 安装适用于 Windows 的 OpenSSH。
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
**注意:**要安装 OpenSSH,您必须以管理员身份运行 PowerShell。
2.运行 SSH 命令连接到您的实例:
使用公共域名:
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-dns-name
使用公共 IPv4 地址:
ssh -i /path/key-pair-name.pem instance-user-name@instance-public-IPv4-address
使用公共 IPv6 地址:
ssh -i /path/key-pair-name.pem instance-user-name@instance-IPv6-address
方法 3: 在 Windows 中使用 PuTTY
1.使用 PuTTYgen 转换您的私钥。
2.使用 PuTTY 连接到您的实例。
3.启动 PuTTY。
4.在类别下,选择会话。
5.在主机名中,输入用户名/主机名组合:
使用公共域名:
instance-user-name@instance-public-dns-name
使用公共 IPv4 地址:
instance-user-name@instance-IPv4-address
使用公共 IPv6 地址:
instance-user-name@instance-IPv6-address
6.确保端口值与 SSH 服务端口相匹配(默认 22)。
7.对于连接类型,选择 SSH。
8.在类别下,展开连接,展开 SSH,然后选择 Auth。
9.选择浏览,然后选择您为密钥对生成的 .ppk 文件。
10.选择打开。
**注意:**首次连接到实例时,必须确认您信任远程主机。
适用于 Linux 实例的 EC2 Serial Console
EC2 Serial Console 与 EC2 实例建立串行连接,以便您解决启动和网络连接问题。
局限性:
- 每个实例仅支持一个活跃的串行控制台连接。
- 会话之间必须至少有 30 秒的间隔。
- 在 EC2 Serial Console 会话期间,您的实例的吞吐量略有下降。
- 不支持 Xen 实例。
- Wavelength Zone 和 AWS Outposts 不支持 EC2 Serial Console。
- 只有某些 AWS 区域支持 EC2 Serial Console。
**重要信息:**在使用 EC2 Serial Console 进行连接之前,请确保具备所有先决条件。
方法 1: 使用基于浏览器的客户端
1.打开 EC2 控制台。
2.选择实例。
3.选择您的实例,然后依次选择操作、监控和故障排除、EC2 Serial Console、连接。或选择实例,然后依次选择连接、EC2 串行控制台、连接。
4.当浏览器内终端窗口打开时,按 Enter。如果出现登录提示,请输入基于密码的用户的用户名,然后按 Enter。
在密码提示符处,输入密码,然后按 Enter。
方法 2: 使用 SSH
1.将您的 SSH 公钥推送到实例以启动串行控制台会话:
aws ec2-instance-connect send-serial-console-ssh-public-key \ --instance-id i-0123456789EXAMPLE \ --serial-port 0 \ --ssh-public-key file://my_key.pub \ --region us-east-1
**注意:**在前面的示例命令中,确保将 file:// 前缀添加到 SSH 公钥路径。
2.使用您的私钥连接到串行控制台:
ssh -i my_key i-0123456789EXAMPLE.port0@serial-console.ec2-instance-connect.us-east-1.aws
3.(可选)验证指纹。将您首次连接到串行控制台时出现的指纹与该地区唯一的 EC2 Serial Console 指纹进行比较。
4.如果再次出现提示,请输入基于密码的用户的用户名,然后按 Enter。
5.在密码提示符处,输入密码,然后按 Enter。
会话管理器
会话管理器允许安全访问托管节点,无需打开入站端口或管理 SSH 密钥。您可以使用 AWS CloudTrail 事件来审核会话管理器会话,并使用 AWS Identity and Access Management (AWS IAM) 策略控制会话。
局限性:
- 您无法使用会话管理器传输文件。
**注意:**相反,使用 S3 桶和 AWS CLI 来交换数据。 - 日志记录不适用于通过端口转发或 SSH 连接的会话管理器会话。这是因为 SSH 会加密所有会话数据,而会话管理器仅用作 SSH 连接的隧道。
- 并非所有操作系统 (OS) 都支持 AWS Systems Manager。有关更多信息,请参阅支持的操作系统。
**重要信息:**在使用会话管理器连接到您的实例之前,请确保具备所有先决条件。
最佳做法是创建 VPC 终端节点供 Systems Manager 使用:
- 打开 Systems Manager 控制台。
- 选择会话管理器。
- 选择启动会话。
- (可选)在会话原因字段中输入会话描述。
- 选择要连接的托管节点,然后选择启动会话以立即启动会话。
-或-
(可选)使用自定义文档配置会话设置,包括持续时间、加密和日志记录:
对于会话选项,选择下一步。
对于会话文档,选择要在会话启动时运行的文档。如果您的文档支持运行时系统参数,则可以在每个参数字段中输入一个或多个以逗号分隔的值。
选择下一步。
选择启动会话。
使用 EC2 控制台进行连接
- 打开 EC2 控制台。
- 选择实例。
- 选择实例,然后选择连接。
- 对于连接方法,选择会话管理器。
- 选择连接。
使用 AWS CLI 进行连接
注意:
- 如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
- 要使用 AWS CLI 运行会话命令,您必须在本地计算机上安装会话管理器插件。
运行以下命令:
aws ssm start-session --target instance-id
通过会话管理器上使用 SSH 进行连接
要求:
- 您必须将目标托管实例配置为支持 SSH 连接。
- 正在运行的 AWS Systems Manager Agent (SSM Agent) 版本必须是 2.3.672.0 或更高版本。
- 您可以访问 Privacy Enhanced Mail (PEM) 证书,并且可以使用与其关联的帐户进行连接。例如,Ubuntu 托管节点的用户账户“ubuntu”。
要使用 SSH 启动会话,请运行以下命令:
ssh -i /path/my-key-pair.pem username@instance-id,/code>
Amazon EC2 Instance Connect
EC2 Instance Connect 允许通过 SSH 安全访问您的实例。EC2 Instance Connect 提供多种选项,无需共享 SSH 密钥即可连接到您的实例。
局限性:
- EC2 Instance Connect 对 Linux 发行版的支持有限。
- 必须尚未配置 AuthorizedKeysCommand 和 AuthorizedKeysCommandUser 设置。
- 本地区域不支持 EC2 Instance Connect。
- 使用 Amazon EC2 控制台时,必须使用公共 IPv4 地址才能连接。
- EC2 Instance Connect 不支持使用 IPv6 地址进行连接。
**重要信息:**在使用 Amazon EC2 Instance Connect 之前,务必具备所有先决条件。
使用 Amazon EC2 控制台进行连接(仅适用于具有 IPv4 公共地址的实例)
1.打开 Amazon EC2 控制台。
2.在导航窗格中,选择实例。
3.选择实例,然后选择连接。
4.选择 EC2 Instance Connect。
5.验证用户名,然后选择连接打开终端窗口。
使用您自己的密钥和 SSH 客户端进行连接
**注意:**您必须在要连接的实例上安装 EC2 Instance Connect CLI。
1.运行以下命令生成新的 SSH 私钥和公钥:
ssh-keygen -t rsa -f my_key
2.将您的 SSH 公钥推送到实例:
Amazon Linux:
aws ec2-instance-connect send-ssh-public-key \ --region us-west-2 \ --instance-id i-0123456789Amzn \ --instance-os-user ec2-user \ --ssh-public-key file://my_key.pub
Ubuntu:
aws ec2-instance-connect send-ssh-public-key \ --region us-west-2 \ --instance-id i-0123456789Ubuntu \ --instance-os-user ubuntu\ --ssh-public-key file://my_key.pub
**注意:**在前面的示例命令中,确保将 file:// 前缀添加到 SSH 公钥路径。
3.使用您的私钥连接到实例:
Amazon Linux:
ssh -o "IdentitiesOnly=yes" -i my_key ec2-user@instance-public-dns-name
Ubuntu:
ssh -o "IdentitiesOnly=yes" -i my_key ubuntu@instance-public-dns-name
**注意:**标准的 Amazon EC2 实例公共 DNS 名称类似于 **ec2-12-34-56-78.us-west-2.compute.amazonaws.com。**该名称由 AWS 域、服务(在本示例中为 compute)、区域和公共 IP 地址的形式组成。
使用 EC2 实例 CLI 进行连接
Amazon Linux:
$mssh i-0123456789Amzn
Ubuntu:
$mssh ubuntu@i-0123456789Ubuntu
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 10 个月前
- AWS 官方已更新 2 年前