我试图在启动期间使用userdata在ec2实例上拉出bitbucket存储库。 为此,我创建了一个密钥对并将其链接到我的bitbucket帐户。我已将私钥放入我的实例可通过IAM Role访问的S3存储桶中。
虽然当我手动执行每个步骤时这一切都很有效(登录ec2实例,从s3下载密钥,ssh-add the key,git clone my repo),当我尝试使用它时,一切都变得很糟糕通过userdata。
这是我迄今为止所尝试过的:
aws s3 cp s3://bucket/private_key private_key
chmod 600 private_key
eval `ssh-agent -s`
ssh-add private_key
mkdir -p .ssh
ssh-keyscan -t rsa bitbucket.org > .ssh/known_hosts
git clone git@bitbucket.org:user/project.git
同样,这一切都可以在手动完成时完美运行。 然而,当通过userdata完成时,输出将是:
download: s3://bucket/private_key to ./private_key
Agent pid 1623
Identity added: private_key (id_rsa)
# bitbucket.org SSH-2.0-OpenSSH_5.3
Initialized empty Git repository in /project/.git/
Host key verification failed.
fatal: The remote end hung up unexpectedly
我尝试过几件事情,但它就像添加密钥时使用的ssh一样,与用于拉动回购的密钥相同... 任何意见都将非常感谢!
答案 0 :(得分:1)
您的Linux发行版是什么?
mkdir -p .ssh
ssh-keyscan -t rsa bitbucket.org > .ssh/known_hosts
您没有在主目录中创建.ssh
目录。根据您的Linux发行版,将其更改为/home/ec2-user/
或/home/ubuntu/
或/root/
等,
示例强>:
mkdir -p /home/ubuntu/.ssh
ssh-keyscan -t rsa bitbucket.org > /home/ubuntu/.ssh/known_hosts