Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
我可以使用哪些方法连接我的 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
