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

EC2 Userdata脚本克隆Bitbucket私有仓库失败问题排查

解决EC2 Userdata中Git Clone失败的问题

核心原因

Cloud-Init(Userdata)默认以root用户执行,和手动登录的普通用户(如ubuntu)环境存在差异:

  • $HOME指向/root而非普通用户家目录
  • 环境变量、SSH配置路径与手动执行时不一致
  • 可能缺少SSH主机密钥缓存

具体解决方案

1. 明确指定SSH密钥路径执行Git Clone

在Git命令中直接指定私钥位置,避免依赖默认的~/.ssh/id_rsa路径:

git clone -b dev git@bitbucket.org:xxx/yyy.git --config core.sshCommand="ssh -i /home/ubuntu/.ssh/id_rsa -o StrictHostKeyChecking=no"

替换/home/ubuntu/.ssh/id_rsa为你实际存放私钥的路径。

2. 同步密钥到Root用户的SSH目录

如果要保持Git命令简洁,可先将私钥复制到root的SSH目录并设置权限:

# 创建root的SSH目录(如果不存在)
mkdir -p /root/.ssh
# 复制私钥到root目录
cp /home/ubuntu/.ssh/id_rsa /root/.ssh/
# 设置正确的权限(必须600)
chmod 600 /root/.ssh/id_rsa
# 提前添加Bitbucket的主机密钥到known_hosts
ssh-keyscan bitbucket.org >> /root/.ssh/known_hosts

之后再执行原Git Clone命令即可。

3. 启用Git详细日志排查问题

在Userdata的Git命令中添加-vv参数,输出详细调试信息到/var/log/cloud-init-output.log,方便定位具体失败点:

git clone -b dev git@bitbucket.org:xxx/yyy.git -vv

查看日志时可重点关注权限错误、路径不存在、SSH连接细节等信息。

4. 确保Userdata脚本的执行顺序

如果私钥是在Userdata中生成或复制的,要确保密钥权限设置、SSH认证测试命令在Git Clone之前执行,避免时序问题。

内容的提问来源于stack exchange,提问作者lalala hey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:12:36