Git克隆EC2实例权限错误

4

我想把我的私有Github仓库克隆到我的EC2实例上,但是似乎我可能在允许Github连接到EC2实例的步骤上出错了。在我创建的路径为/var/www/app的文件夹中运行git clone git@github.com:username/repo.git后,系统提示我验证Githbuc.com主机,并呈现两个RSA密钥指纹(我猜测是我的仓库中的密钥),然后发送一个错误信息:

Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

在运行git clone命令之前,我将在我的.pem中找到的SSH密钥复制到了我的Github SSH密钥中。这些EC2凭据是我用来SSH登录实例的。这是使用的错误密钥吗?我知道EC2实例还有在.ssh/authorized_keys中找到的公钥,但我觉得这些公钥与用于SSH登录实例的公钥相同。
我是否漏掉了一步?在/var/www/app目录中需要初始化git或在git clone命令之前配置任何内容吗?
任何帮助都将是极好的。谢谢!
3个回答

5

请确保您在本地计算机的~/.ssh/目录下生成了SSH密钥对,并且您的公钥已添加到GitHub帐户中。

要将您的SSH密钥对从本地目录克隆到EC2实例,请按照以下步骤进行:

将您的公钥克隆到您的EC2实例:

$ cat ~/.ssh/id_rsa.pub | ssh -i ~/.ssh/your_pem.pem ubuntu@your_dns "cat >> .ssh/authorized_keys"

如果“.ssh/authorized_keys”文件不存在,请登录到您的 EC2 实例并创建该目录:
$ ssh -i ~/.ssh/***.pem ubuntu@[Your Public DNS]
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ exit  # exit EC2 terminal, this will not stop your instance

然后,继续将我们的GitHub私钥安全复制到EC2实例。 "UserKnownHostsFile"和"StrictHostKeyChecking"选项会删除主机验证提示(计算机会要求您键入yes或no以继续)。如果我们想在脚本中运行这些操作,则删除此选项是必需的。

$ scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ~/.ssh/your_pem.pem ~/.ssh/id_rsa ubuntu@your_dns:~/.ssh/

您可以使用ssh密钥对连接到git。

如果这不起作用,可以参考更详细的教程:“在Amazon EC2中运行存储库中的脚本”:

https://github.com/yafangy/Tutorial-using-Amazon-AWS-EC2-run-scripts-GitHub/tree/master#method-2-clone-git-to-ec2-instance-recommended


1
你需要前往EC2设置中的安全组并打开对GIT的访问权限。密钥可能没问题,因为它是你的密钥,但你需要修改凭据和安全组。
同样地,你可以修改凭据以仅开放给特定IP,并执行类似的操作。默认情况下,仅限内部访问。
问候,
DH

谢谢您的回答。我有一个安全组,其中包含一个SSH端口,只允许我的个人IP访问,以防止公共SSH访问我的EC2实例。您是说我需要修改这个安全组以允许Github访问EC2实例吗?您有一个安全的白名单Github的示例来启用连接吗? - cphill
是的。在AWS中,所有对实例的访问都通过安全组进行控制。您可以设置一系列不同的规则来控制哪些内容可以访问,哪些内容不能访问。我从亚马逊找到了参考文档,告诉您如何做到这一点(比我打整个东西更容易)。https://aws.amazon.com/blogs/devops/automatically-deploy-from-github-using-aws-codedeploy/如果我的回答有帮助,请告诉我。 - Hercules_Daniel

1
将在此机器上生成的(或现有的)公钥添加到您的Github账户的设置中的ssh密钥键链中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接