【问题标题】:git push origin master: permission denied (public key) errorgit push origin master:权限被拒绝(公钥)错误
【发布时间】:2014-01-17 07:10:35
【问题描述】:

我已经在我的 amazon ec2 ubuntu 服务器实例上设置了一个 git repo。我一直在尝试将代码从本地机器推送到服务器的存储库中。我遵循的步骤是:

ssh-add /path/to/myEC2publickey

在我的 EC2 实例上

mkdir /path/my_project.git
cd /path/my_project.git
git init --bare

稍后在我的本地主机上,

cd the_project 
git init git add . 
git commit -m "Initial git commit message" 
git remote add origin username@hostname.com:the_project.git 
git config --global remote.origin.receivepack "git receive-pack" 
git push origin master

由于我在执行最后一个命令(即 git push origin master)时遇到权限定义(公钥)错误,所以我使用论坛上给出的步骤设置了公钥,其中包括 -

ssh-keygen -t rsa -C "myemail@somedomain.com"
eval 'ssh-agent -s'
ssh-add

我能够添加公钥,但我仍然面临 Permission Denied (public key) :错误。

我是 git 新手,一直期待将我所有的代码转移到一个 git repo 中。

任何帮助将不胜感激。

【问题讨论】:

    标签: git amazon-ec2


    【解决方案1】:

    您似乎错过了(或未包含在您的描述中)的一个步骤是在服务器端发布公钥。
    上传您的公共 ssh 密钥并将其添加到 ~username/.ssh/authorized_keys 文件中。

    另外,首先使用不带密码的私钥尝试(用于测试)(无需通过 ssh 将您的密钥添加到 ssh 代理)

    最后,确保您的 ssh 密钥使用标准名称(id_rsaid_rsa.pub),并提供适当的保护:

    最后,如果前面的步骤没有解决问题,ssh -Tvvv username@hostname.com 应该会告诉您更多信息。

    【讨论】:

    • 这是我到目前为止所做的:我在“myname@somedomain.com”下创建了一个公钥,我什至使用'ssh-keygen -t rsa -C“myname@somedomain.com”'将文件从 /root/.ssh/id_rsa.pub 复制到服务器 /home/ubuntu/.ssh/authorized_keys 文件中。但我仍然得到相同的权限被拒绝错误。我不知道如何处理您给出的最后一个 ssh 语句。但我确实尝试过,最后几行如下:'debug1: could not open key file'/home/amit/.ssh/id_rsa': Permission denied'
    • 我已经浏览了很多论坛来设置 git,但我没有看到任何论坛建议将密钥添加到 authorized_keys 文件中,这让我在工作站上呆了好几个小时。感谢@VonC,现在我可以休息一下了!
    【解决方案2】:

    完整的程序是:

    1. 使用以下命令将 EC2 公钥添加到您的 ssh 列表中

      ssh-add /path/to/myEC2publickey
      
    2. 使用以下内容在 EC2 实例上创建一个 git 存储库 命令

      mkdir /path/my_project.git
      cd /path/my_project.git
      git init --bare
      
    3. 使用 命令

      cd the_project 
      git init
      git add . 
      git commit -m "Initial git commit message" 
      git remote add origin username@hostname.com:the_project.git 
      git config --global remote.origin.receivepack "git receive-pack" 
      git push origin master
      
    4. 以用户身份创建公钥并将其添加到服务器的 授权密钥

      您可以通过将文件 id_rsa.pub 从 localhost 到服务器 ~/.ssh/authorized_keys 文件,如建议 上一个答案。

    如果您尝试 git push,按照这些步骤操作后,您应该不会收到“permission denied”错误。

    【讨论】:

    • 看起来正确,类似于我的回答。 +1。将公钥发布到服务器 ssh 帐户 authorized_keys 文件确实是关键的一步,因为 ssh 守护进程能够识别请求 ssh 会话的用户。
    • @VonC:同意它与您的答案相似,但添加了一些描述。
    猜你喜欢
    • 2013-01-20
    • 2013-04-29
    • 1970-01-01
    • 2013-11-08
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    相关资源
    最近更新 更多