其他

AWS EC2 Instance Connect

Amazon EC2 Instance Connect 允许系统管理员向EC2实例发布一次性使用的SSH公钥,为用户提供简单安全的方式连接到他们的云服务器实例。

查看官方文档 ↗

接入教程

1. 在AWS控制台启用EC2 Instance Connect功能
2. 为EC2实例配置IAM权限策略
3. 使用AWS CLI或控制台生成临时SSH密钥
4. 通过SSH客户端连接EC2实例
5. 连接后密钥自动失效确保安全

使用Python发送SSH公钥到EC2实例

python
import boto3
from botocore.exceptions import ClientError

# Initialize the EC2 Instance Connect client
ec2_connect = boto3.client('ec2-instance-connect', region_name='us-east-1')

try:
    response = ec2_connect.send_ssh_public_key(
        InstanceId='i-1234567890abcdef0',
        InstanceOSUser='ec2-user',
        SSHPublicKey='ssh-rsa AAAAB3NzaC1yc2E...',
        AvailabilityZone='us-east-1a'
    )
    print(f"Key sent successfully: {response}")
except ClientError as e:
    print(f"Error sending key: {e.response['Error']['Message']}")

使用PHP通过EC2 Instance Connect发送公钥

php
<?php
require 'vendor/autoload.php';

use Aws\Ec2InstanceConnect\Ec2InstanceConnectClient;
use Aws\Exception\AwsException;

$client = new Ec2InstanceConnectClient([
    'region' => 'us-east-1',
    'version' => 'latest'
]);

try {
    $result = $client->sendSSHPublicKey([
        'InstanceId' => 'i-1234567890abcdef0',
        'InstanceOSUser' => 'ec2-user',
        'SSHPublicKey' => 'ssh-rsa AAAAB3NzaC1yc2E...',
        'AvailabilityZone' => 'us-east-1a'
    ]);
    echo "Public key sent successfully.\n";
} catch (AwsException $e) {
    echo "Error: " . $e->getMessage() . "\n";
}
?>

使用JavaScript发送一次性SSH密钥到EC2

javascript
const { EC2InstanceConnectClient, SendSSHPublicKeyCommand } = require('@aws-sdk/client-ec2-instance-connect');

const client = new EC2InstanceConnectClient({ region: 'us-east-1' });

const params = {
    InstanceId: 'i-1234567890abcdef0',
    InstanceOSUser: 'ec2-user',
    SSHPublicKey: 'ssh-rsa AAAAB3NzaC1yc2E...',
    AvailabilityZone: 'us-east-1a'
};

async function sendSSHKey() {
    try {
        const command = new SendSSHPublicKeyCommand(params);
        const response = await client.send(command);
        console.log('SSH public key sent successfully:', response);
    } catch (error) {
        console.error('Error sending SSH key:', error.message);
    }
}

sendSSHKey();

常见问题

EC2 Instance Connect 的主要优势是什么?

EC2 Instance Connect 的主要优势包括:无需在本地管理SSH密钥,通过IAM策略控制访问权限,提供一次性使用的临时密钥增强安全性,以及简化了EC2实例的连接流程。

使用EC2 Instance Connect需要哪些前提条件?

使用前需要确保:目标EC2实例安装了EC2 Instance Connect服务,实例安全组允许SSH访问(端口22),IAM用户具有必要的权限(如ec2-instance-connect:SendSSHPublicKey),以及实例位于支持的可用区。

EC2 Instance Connect 支持哪些操作系统?

EC2 Instance Connect 主要支持Amazon Linux 2和Ubuntu等Linux发行版。Windows实例不支持此功能,需要使用其他连接方式如RDP或Session Manager。

相似接口推荐

AWS SSO Identity Store

AWS SSO Identity Store是AWS IAM Identity Center(原AWS单点登录)使用的身份存储服务,提供一个统一的位置检索所有身份信息(用户和群组)。该服务简化了身份管理流程,帮助集中管理

待确认
Amazon Honeycode

Amazon Honeycode是一项全托管服务,让您无需编程即可快速为团队构建移动和Web应用。可用于管理项目、客户、运营、审批、资源乃至团队协作等各类事务。

待确认
AWS Glue

AWS Glue 是一项完全托管的提取、转换和加载(ETL)服务,可简化数据准备和集成工作。它自动发现、编目数据,并支持在数据湖和数据仓库之间进行ETL操作。

待确认
亚马逊Glacier

亚马逊S3 Glacier(简称Glacier)是一款针对“冷数据”的存储解决方案。这项超低成本的存储服务为数据备份和归档提供安全、持久且易于使用的存储方案。用户可经济高效地存储数据数月、数年甚至数十年。

待确认