将 GitHub ssh 密钥添加到 ec2 实例

Posted

技术标签:

【中文标题】将 GitHub ssh 密钥添加到 ec2 实例【英文标题】:Add GitHub ssh keys to ec2 instance 【发布时间】:2021-05-21 23:05:58 【问题描述】:

我想与我创建的所有新实例共享一个 GitHub 项目 ssh 密钥对,以便可以 git clone 并从用户数据文件启动程序,而无需在实例中执行 ssh。

在 GCP 上很容易做到,但不太确定如何在 AWS ec2 实例中做到这一点。

编辑:在 GCP 中,我只需使用在实例之间共享的“秘密管理器”。

【问题讨论】:

我目前发现的唯一选择是创建一个已经包含密钥和 repo 的 AMI,然后在用户数据文件中添加一个 git pull。听起来这不是一个好习惯。 @IMSoP 好点,我编辑了问题 【参考方案1】:

由于您提到您将在 Google Cloud 中使用 Secret Manager,因此建议 AWS Secrets Manager 服务似乎是合理的。

将您的私钥设置为 Secret,并使用附加到 EC2 实例的 IAM 角色授予对它的访问权限。然后在构建 AMI 之前安装 AWS CLI 包,您可以使用它在首次启动时通过用户数据脚本获取密钥。

【讨论】:

【参考方案2】:

因为与 GCP 相比,我发现 AWS 机密管理器难以使用且价格昂贵,所以我最终使用了解决方案。

这是我在创建时传递给实例的用户数据文件。

sudo mkdir ~/.ssh
sudo touch ~/.ssh/id_rsa
sudo echo "-----BEGIN OPENSSH PRIVATE KEY-----
My GitHub private key" >> ~/.ssh/id_rsa
sudo chmod 700 ~/.ssh/
sudo chmod 600 ~/.ssh/id_rsa
git clone https://wwww.github.com/your-repo 
# other commands goes here

请注意,它会将其添加到 root 用户。

不是最干净的解决方案,但效果很好

编辑:sudo 不应该是必需的,因为它都以 root 身份运行

【讨论】:

这样做的一个相当严重的缺点是,任何有权访问 EC2 控制台的人都可以以纯文本形式看到私钥。

以上是关于将 GitHub ssh 密钥添加到 ec2 实例的主要内容,如果未能解决你的问题,请参考以下文章

将密钥对添加到现有 EC2 实例

如何在没有 PEM 密钥的情况下通过 ssh 进入 EC2 实例?

在 Windows 中使用 PuTTY SSH 到 Amazon EC2 实例

将 ssh 密钥添加到 Elastic Beanstalk

允许用户通过 ssh 访问 EC2 Ubuntu 实例?

AWS SSH 访问密钥生成过程并安装在 EC2 上