Heroku'权限被拒绝(publickey)致命:无法读取远程存储库的问题

the*_*ain 139 git ssh repository heroku public-key

我已经搜索了好几个小时,希望找到一个解决方案来解决我看似容易解决的问题.这并不是说我的搜索没有发现,而是我的搜索出现了许多不同的解决方案 - 其中没有一个有效.

无论如何,我根本无法从我的Mac上推送,拉取或从我的Heroku存储库中取出.每一次尝试都给了我(好像在嘲笑我)以下错误:

'权限被拒绝(公钥).致命:无法从远程存储库读取.

我已尝试(并重新尝试)以多种不同方式修复它.正如我所说,过去两天我花了很多时间寻找答案.以下是我尝试过的一些事情:

  • heroku键:清除后跟heroku键:添加
  • 使用'ssh-keygen -t rsa'自行重新生成ssh密钥
  • 清除我的.ssh目录,然后是heroku键:clear,然后生成一个ssh密钥
  • 删除我在heroku上的应用程序并重新创建一个(幸运的是没有多少在那里)

我可以从我的GitHub存储库中获取,所以我知道它不是网络连接(ping heroku也可以).

作为一个临时解决方案(我希望不会成为永久解决方案),我已登录到我的Ubuntu Amazon AWS ec2实例.从Heroku拉出和推动工作完美.出于这个原因,我仍然觉得我的Mac上的ssh键问题就好了.这两个键都显示在我的Heroku帐户下.密钥结束时的电子邮件地址是否重要?

编辑:我可以从GitHub推送和拉(但我没有使用ssh),为什么不是Heroku?

在这一点上,我愿意尝试任何事情.谢谢!

Kri*_*eck 279

我知道这已经得到了解答.但我想补充一下我的解决方案,因为它可能对将来的其他人有所帮助.

一个常见的关键错误是:Permission denied (publickey).您可以通过使用keys:add通知Heroku新密钥来解决此问题.

简而言之,请按照以下步骤操作:https://devcenter.heroku.com/articles/keys

首先,如果您没有密钥,则必须创建密钥:

ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)

其次,你必须将密钥添加到Heroku:

heroku keys:add
Run Code Online (Sandbox Code Playgroud)

  • heroku键:添加是我的教程错过了我猜...谢谢!:) (8认同)
  • 第一个是不必要的.`heroku keys:add`将帮助你创建一个如果你没有密钥. (4认同)
  • 谢谢克里斯,未来的某人:)这对我有用 (2认同)

the*_*ain 122

我以为我会分享我找到了自己问题的答案.

写出我的问题让我更加清楚,我进一步调查了我认为我的问题所处的位置:ssh键

事实证明我是对的.问题不在于密钥本身,而在于我没有将其添加到我当地的Mac已知ssh密钥列表中.因此即使我的Heroku帐户上传了正确的密钥,我的Mac也无法通过它进行身份验证,因为它无法在我的计算机上找到该密钥.解决方案?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l
Run Code Online (Sandbox Code Playgroud)

我想赞扬https://help.github.com/articles/error-permission-denied-publickey作为一个很好的参考.

  • 感谢您的反馈,比我最初的评论更准确.+1 (5认同)
  • 在Windows上,需要启动`Git Bash`(右键单击一个文件夹),并启动一个`ssh-agent`,这可以通过运行`\`ssh-agent \``(注意后面的滴答声)然后添加如上所述的关键.每次我启动`Git Bash` /`ssh-agent`时我都必须这样做,它会忘记添加的内容. (4认同)

Bry*_*ers 31

我有完全相同的错误(在Windows 7上),原因是不同的.我以不同的方式解决了它,所以我想我会在这里为其他人添加原因和解决方案.

即使错误似乎指向heroku真的错误说"Heroku can't get to the git repository".我发誓我在所有服务器上都有相同的密钥,因为我创建了它并同时将其上传到一个接一个.

花了将近一天的时间后,我意识到因为git只显示指纹而不是实际的键.我无法验证它与我的HD或heroku上的键匹配.我查看了已知的hosts文件并猜测...它显示了每个服务器的密钥,我能够清楚地看到git和heroku公钥不匹配.

1)我删除了我的密钥文件夹中的所有文件,使用他们的网站从github获取密钥,使用git bash和命令删除了来自heroku的密钥 heroku keys:clear

2)其次GitHub的说明在这里产生一个新的密钥对并上传公钥与git

3)使用git bash- heroku keys:add 相同的密钥上传到heroku.

现在git push heroku master有效.

多么噩梦,希望这对某人有所帮助.

布赖恩


sjk*_*ing 17

我遇到的问题是我只使用https作为我的GitHub帐户.我需要确保我的GitHub帐户已设置为ssh访问,并且GitHub和heroku都使用相同的公钥.这些是我采取的步骤:

  1. 导航到〜/ .ssh目录并删除id_rsa和id_rsa.pub(如果它们在那里).我开始使用新密钥,但可能没有必要.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
    Run Code Online (Sandbox Code Playgroud)
  2. 按照gitHub上的步骤生成ssh密钥
  3. 登录heroku,创建一个新站点并添加您的公钥:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    
    Run Code Online (Sandbox Code Playgroud)


oqx*_*oqx 6

我在linux ubuntu上有相同的情况并且修复了它,似乎操作系统在/root/.ssh/和home/user/.ssh/dir之间混淆了,我做的是:

  1. 从root和home/user .shh目录中删除所有密钥.
  2. 生成一个新密钥,确保注意创建的路径(/home/you/.ssh/id_rsa)或(/root/.ssh/id_rsa)
  3. 检查heroku密钥 heroku keys
  4. 如果钥匙在那里清楚 heroku keys:clear
  5. heroku keys:add现在在这里,如果heroku找不到一个密钥,并要求生成一个正确的否,这意味着你有与我相同的问题,请执行这样的添加命令heroku keys:add /root/.ssh/id_rsa.pub,你将添加的路径将是你得到的路径在第2步.
  6. git push heroku master现在试试