通过AWS Console连接服务器,简化运维过程

简单通过AWS Console连接您的Linux服务器

本文作者: 封磊

Eclicktech SA | AWS Community Builder DevTool | AWS UGL | 亚马逊云科技云博主

阿里云&InfoQ&CSDN签约作者

文章目录

  • [简单通过AWS Console连接您的Linux服务器](#简单通过AWS Console连接您的Linux服务器)
  • [本文作者: 封磊](#本文作者: 封磊)
  • [Eclicktech SA | AWS Community Builder DevTool | AWS UGL | 亚马逊云科技云博主](#Eclicktech SA | AWS Community Builder DevTool | AWS UGL | 亚马逊云科技云博主)
  • 阿里云&InfoQ&CSDN签约作者

在AWS上部署EC2实例后,我们通常需要通过SSH连接到Linux服务器进行管理。AWS提供了多种连接方式,其中EC2 Instance Connect是最便捷的一种,无需配置密钥对或SSH客户端,即可直接在浏览器中连接您的实例。

本文将介绍两种常见的情况:

  • 快速启动的标准镜像(Amazon Linux 2、Ubuntu 等)
  • 来自Marketplace的自定义镜像(如Nginx预装包、第三方Linux发行版等)

并详细讲解如何确保实例支持EC2 Instance Connect功能。


目录


前提条件

  1. EC2实例已成功运行。
  2. 实例的安全组已开放入站SSH端口(22)。
  3. IAM角色允许使用 EC2 Instance Connect(权限:ec2-instance-connect:SendSSHPublicKey)。
  4. 实例处于可用区且绑定了公共IP地址或有公网访问能力。

情况一:快速启动的标准镜像

AWS在快速创建EC2实例时,提供了常见镜像如Amazon Linux、Ubuntu等,它们默认已预安装EC2 Instance Connect所需组件。

默认支持的操作系统

以下AMI通常默认支持EC2 Instance Connect:

  • Amazon Linux 2
  • Amazon Linux 2023
  • Ubuntu 20.04 / 22.04(部分版本)
  • Debian 10+

⚠️ 注意:某些操作系统如CentOS 7、Red Hat Enterprise Linux、SUSE 等,默认可能未安装此功能。

连接步骤

  1. 登录 AWS Console
  2. 打开 EC2 控制台 > 实例 页面。
  3. 选择目标实例,点击【连接】按钮。
  4. 在弹出的窗口中选择【EC2 Instance Connect】标签。
  5. 点击【连接】按钮,即可在浏览器中打开终端。

情况二:自定义镜像或Marketplace镜像[CentOS Stream 9 (x86_64) ]

当您从 AWS Marketplace 启动实例,或使用第三方导入镜像时,系统中可能未安装 EC2 Instance Connect 所需组件,此时点击连接会提示"连接失败"。

连接测试

CentOS Stream 9 镜像:

https://aws.amazon.com/marketplace/pp/prodview-k66o7o642dfve?applicationId=AWSMPContessa&ref_=beagle&sr=0-1

问题分析

EC2 Instance Connect 依赖以下组件支持:

  • 操作系统用户 ec2-userubunturoot
  • ec2-instance-connect 服务包(用于接收公钥)
  • openssh-server 启动并监听22端口

缺少任一组件都可能导致连接失败。

安装EC2 Instance Connect支持【CentOS Stream 9】

需要通过密钥对连接到服务器,手动安装支持:

安装ec2-instance-connect
bash 复制代码
mkdir /tmp/ec2-instance-connect
curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-2.0.0-3.rhel9.x86_64.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect.rpm
curl https://amazon-ec2-instance-connect-us-west-2.s3.us-west-2.amazonaws.com/latest/linux_amd64/ec2-instance-connect-selinux-2.0.0-3.noarch.rpm -o /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
sudo yum install -y /tmp/ec2-instance-connect/ec2-instance-connect.rpm /tmp/ec2-instance-connect/ec2-instance-connect-selinux.rpm
<font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">/opt/aws/bin/</font> 文件夹中会看到以下新脚本:
bash 复制代码
eic_run_authorized_keys
验证是否在实例上成功安装了 EC2 Instance Connect:
bash 复制代码
sudo less /etc/ssh/sshd_config.d/60-ec2-instance-connect.conf

确保存在默认登录用户(如 ec2-userubuntu),并且具有sudo权限。

如果 <font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">AuthorizedKeysCommand</font><font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">AuthorizedKeysCommandUser</font> 行包含以下值,则成功安装 EC2 Instance Connect:

plain 复制代码
AuthorizedKeysCommand /opt/aws/bin/eic_run_authorized_keys %u %f
AuthorizedKeysCommandUser ec2-instance-connect
  • <font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">AuthorizedKeysCommand</font> 设置 <font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">eic_run_authorized_keys</font> 文件以从实例元数据中查找密钥
  • <font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">AuthorizedKeysCommandUser</font> 将系统用户设置为 <font style="color:rgb(15, 20, 26);background-color:rgb(243, 243, 247);">ec2-instance-connect</font>

替代连接方式

若不能使用EC2 Instance Connect,建议使用以下替代方案:

1. 通过密钥对连接
  • 启动实例时使用密钥对(PEM文件)
  • 使用本地SSH客户端:
bash 复制代码
ssh -i "your-key.pem" ec2-user@<your-public-ip>
2. 使用Session Manager连接(推荐)
  • 确保实例绑定了带有Session Manager权限的IAM角色
  • 安装 SSM Agent(若未安装)
  • 安装 AWS CLI 并配置好权限
  • 在 AWS Console 中点击【连接 > Session Manager】

常见问题排查

问题 原因 解决办法
浏览器连接按钮灰色 实例不支持EC2 Connect 检查AMI是否支持,或改用密钥对连接
连接超时 安全组未开放端口 检查22端口是否开放
提示无默认用户 镜像缺省用户非 ec2-user 自定义AMI时配置正确用户名或调整SSH配置
密钥无效 错误的密钥对或用户 检查使用的密钥文件是否匹配实例

结语

EC2 Instance Connect 是AWS提供的一种无缝、免密钥连接实例的方式,适用于日常运维和临时访问。标准Amazon镜像可直接使用,而自定义镜像则可能需要额外配置。推荐合理选择镜像、配置权限和安全组,并熟练掌握替代连接方案,确保实例随时可用。

如果您对Marketplace镜像或自定义环境有更多需求,也可以考虑结合CloudInit自动安装Connect组件,提升运维效率。


如需帮助自动检测AMI是否支持EC2 Instance Connect,欢迎留言获取自动化脚本!

相关推荐
Fcy6481 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满1 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠2 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥2 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey9032 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技3 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀3 小时前
Linux环境变量
linux·运维·服务器
zzzsde3 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
qq_297574674 小时前
Linux 服务器 Java 开发环境搭建保姆级教程
java·linux·服务器
聆风吟º5 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann