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

EC2 Auto Scaling组用户数据执行时git clone命令失败问题咨询

问题根因
  • 执行用户身份不匹配:EC2实例的用户数据脚本默认以root用户身份运行,你手动执行git clone时使用的是ec2-user(或其他自定义普通用户)。你提前上传到AMI的SSH私钥存放在普通用户的~/.ssh/目录下,root用户执行git操作时无法读取到对应私钥,无法通过GitHub的SSH认证,因此拉取代码失败。
  • 缺少主机指纹确认:首次通过SSH连接GitHub时会触发主机指纹确认步骤,你手动执行时已经完成过确认,而脚本自动运行时没有交互式环境处理确认步骤,会直接卡住终止git操作。
可行解决方案

方案1:指定普通用户执行git操作

如果你的SSH私钥存放在ec2-user目录下,直接用sudo -u指定执行用户即可,修改脚本对应部分:

#! /bin/sh
sudo -u ec2-user git clone mygithubrepository
sudo -u ec2-user bash -c "cd backend && git checkout mybranch"
cd /home/ec2-user/backend/src
# 后面接你原来的生成配置文件逻辑

方案2:指定git使用的私钥路径

在脚本开头添加环境变量,明确指定SSH私钥路径,同时跳过主机指纹确认:

#! /bin/sh
export GIT_SSH_COMMAND="ssh -i /home/ec2-user/.ssh/id_rsa -o StrictHostKeyChecking=no"
git clone mygithubrepository
# 后面接你原来的脚本逻辑

方案3:使用HTTPS+个人访问令牌拉取代码

直接改用GitHub个人访问令牌(PAT)通过HTTPS拉取代码,无需处理SSH密钥权限问题,clone地址格式为:
https://你的PAT令牌@github.com/你的用户名/仓库名.git

调试建议

如果修改后仍有问题,可在脚本开头添加日志输出配置,排查具体错误:

#! /bin/sh
set -x
exec > /var/log/user-data-exec.log 2>&1
# 后面接你原来的脚本内容

实例启动完成后查看/var/log/user-data-exec.log文件,即可看到每一步命令的执行日志和报错信息。

内容的提问来源于stack exchange,提问作者Usman Muhammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:24:07