You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改EC2实例创建脚本,让他人使用自有密钥执行?

解决EC2实例创建脚本适配自定义密钥的问题

核心问题

你的脚本里硬编码了固定的密钥对名称(it-step-testvm-secretkey),这导致只有使用这个密钥对的用户才能正常连接实例,其他用户的自有密钥无法适配。

修改方案

方案1:让用户手动输入密钥对名称

修改脚本,在执行创建命令前提示用户输入自己的密钥对名称,替换硬编码的值:

# 获取user-data内容
user_data_content=$(curl -fsSL -H "Authorization: token github_pat_11A4D3V6Y08fJxiucugdFE_M5UIeyoOskP18fydBFeUDvg1gqqJ201ARgaVztGinCkAKJHWL*****" https://raw.githubusercontent.com/Mr-Marshal1/hometask2/master/user-data-script.sh)
user_data_base64=$(echo -n "$user_data_content" | base64 -w 0)

# 提示用户输入密钥对名称
read -p "请输入你的EC2密钥对名称:" user_key_name

# 创建实例时使用用户输入的密钥对
aws ec2 run-instances --image-id ami-01bc990364452ab3e --instance-type t2.micro --user-data $user_data_base64 --key-name "$user_key_name" --security-group-ids sg-0ad3a9d1ae0f84008

方案2:通过命令行参数传递密钥对名称

把密钥对名称作为脚本参数传入,更适合自动化场景:

# 检查是否传入密钥对名称参数
if [ $# -ne 1 ]; then
    echo "用法: $0 <你的EC2密钥对名称>"
    exit 1
fi

user_key_name=$1

# 获取user-data内容
user_data_content=$(curl -fsSL -H "Authorization: token github_pat_11A4D3V6Y08fJxiucugdFE_M5UIeyoOskP18fydBFeUDvg1gqqJ201ARgaVztGinCkAKJHWL*****" https://raw.githubusercontent.com/Mr-Marshal1/hometask2/master/user-data-script.sh)
user_data_base64=$(echo -n "$user_data_content" | base64 -w 0)

# 创建实例时使用传入的密钥对
aws ec2 run-instances --image-id ami-01bc990364452ab3e --instance-type t2.micro --user-data $user_data_base64 --key-name "$user_key_name" --security-group-ids sg-0ad3a9d1ae0f84008

使用时直接运行:./your-script.sh 你的密钥对名称

额外注意事项

  • 用户必须确保自己的密钥对已存在于当前AWS区域,否则会报错
  • 若需跨区域创建实例,需添加--region参数指定目标区域

内容的提问来源于stack exchange,提问作者Mr.Marshal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:52:49