【问题标题】:Git Clone EC2 Instance Permissions ErrorGit 克隆 EC2 实例权限错误
【发布时间】:2025-12-04 04:50:01
【问题描述】:

我正在尝试将我的私有 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 命令之前配置任何东西吗?

任何帮助都会很棒。谢谢!

【问题讨论】:

    标签: git github amazon-ec2 ssh


    【解决方案1】:

    确保您在本地计算机上生成 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”选项删除主机验证提示(计算机要求您输入是或否以继续)。如果我们想在脚本中运行这些操作,删除它是必不可少的。

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

    您应该能够使用您的 ssh 密钥对连接到 git。

    如果没有修复,更完整的教程“使用 Amazon EC2 在 GitHub 存储库中运行脚本”:

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

    【讨论】:

      【解决方案2】:

      您必须转到 EC2 设置上的安全组并打开对 GIT 的访问权限。密钥可能没问题,因为是您的密钥,但您必须修改凭据和安全组。

      同样,您可以修改凭据以仅开放对特定 IP 的访问并执行类似操作。默认情况下只对内部访问关闭。

      问候,

      DH

      【讨论】:

      • 感谢您的回答。我有一个带有 SSH 端口的安全组,它只允许访问我的个人 IP,以防止公共 SSH 访问我的 EC2 实例。你是说我需要修改它以允许 Github 访问 EC2 实例吗?您是否有将 Github 列入白名单以启用连接的安全方法示例?
      • 是的。在 AWS 中,从任何地方对您的实例的所有访问都通过安全组进行控制。您可以设置一堆不同的规则来控制哪些可以访问,哪些不能访问。我从亚马逊找到了参考文档如何做到这一点(比我输入整个内容更容易)。 aws.amazon.com/blogs/devops/…如果我的回答对你有帮助,请告诉我。
      【解决方案3】:

      将您在这台机器上生成的(或现有的)公钥添加到您的Github 帐户的Settings 中的 ssh 密钥钥匙串中

      【讨论】: