接入教程
1. 在AWS控制台启用EC2 Instance Connect功能
2. 为EC2实例配置IAM权限策略
3. 使用AWS CLI或控制台生成临时SSH密钥
4. 通过SSH客户端连接EC2实例
5. 连接后密钥自动失效确保安全
使用Python发送SSH公钥到EC2实例
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
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
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。
Aitishiku.com