85

请原谅我有点沮丧,因为 Heroku 使用 SO 作为他们的客户支持(我认为至少可以说是粗制滥造的),所以我会尽量保持检查。

在过去的五个小时里,我一直在尝试发布一个应用程序,但总是会出现密钥问题。我已经阅读了数十篇文章,并尝试了一个又一个提示,以找出 Heroku 在愚蠢、完全不透明的过程中搞砸的地方。

我的用例并不难:我为我的 heroku 应用程序创建了一个新的密钥对。我已将该密钥设置为我的密钥:

  > heroku keys
  === travis@xxxx.com Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd travis@xxxx.com

我可以毫无问题地登录并“创建”一个应用程序(愚蠢的名字,因为它似乎是在创建一个 git repo,而不是任何类型的应用程序)。但是每次我尝试推送我的应用程序时,我都会得到

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

我不知道 WTF 正在发生什么;我只是把头撞在键盘上,没有追索权,但希望谷歌的全能之神能回答它。谷歌没有回答它(好吧,让我收回,我已经看到了大约十几种方法来回答这个问题)。

对于一个应该很简单的系统来说,这是一个笑话。我喜欢 Heroku 的想法,但是在服用了 5 次之后完全没有做任何事情,我想这可能是错误的选择。

4

6 回答 6

149

网络上有各种各样的解决方案。我将尝试将可用选项浓缩到一篇文章中。请在每一步后再次尝试连接。

  • 第 1 步:尝试将您的公钥添加到 Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • 第 2 步:生成一组新的 SSH 密钥,然后再次尝试第一步

    https://help.github.com/articles/generating-ssh-keys

  • 第 3 步:验证和/或修改您的配置文件

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User jsmith@gmail.com
    
  • 第 4 步:从 git 中删除 heroku 远程,重新创建连接,通过 heroku create 添加远程将只是新存储库的一个选项。请务必删除您最初尝试创建的旧存储库

     $ git remote rm heroku
     $ heroku create
    
  • 第 5 步:重新安装 Heroku Toolkit

于 2013-03-04T22:38:59.217 回答
13

您的 heroku 密钥和 github 密钥不同步。

  • 确定要使用的密钥(建议创建一个新密钥,即 heroku_rsa)。

  • 将密钥添加到 github。

  • 使用以下命令将相同的密钥添加到 heroku:heroku keys:add

于 2013-06-08T23:33:36.827 回答
2

部署 heroku 代码时权限被拒绝(公钥)。致命:远端意外挂断

我认为这可能有你的解决方案,它至少对我有用

于 2012-11-27T19:20:12.550 回答
2

我遇到了同样的问题,这是我关于发生了什么的理论:

我很久以前就注册了 Heroku,给了他们我的 github 公钥。尝试通常git push heroku master时,它会查找我的私钥,在~/.ssh/github_rsa. 然后它会以您发布的消息静默失败。

但是,我稍后尝试ssh使用该标志进入另一台服务器-i来指定我的“身份文件”(即私钥),它提示我输入私钥的密码。在“解锁”私钥后,该git push heroku master命令起作用。一些结论:

  • 虽然ssh会提示您输入身份文件的密码,但git不会。
  • 如果您使用其他方法解锁身份文件,例如ssh,它将保持解锁状态以供您git使用。
  • 似乎没有任何关于如何永久删除身份文件上的密码保护的文档,包括使用 common unix command keytool
  • 上述创建新公钥/私钥对的解决方案似乎是解决此密码问题的方法,但并不知道这是问题所在。
于 2012-11-27T01:00:06.330 回答
1

对我来说,问题似乎是我在后台运行了 ssh-agent,并且没有添加相关的私钥。

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

我还必须将公钥添加到 github(手动)和 heroku

heroku keys:add ~/.ssh/id_rsa_heroku_github.pub
于 2014-11-23T15:21:30.957 回答
0

如果其他解决方案都不适合您,请确保您使用自己帐户而不是root帐户登录 linux shell。

这样,如果您使用不是 ssh 密钥所有者的用户运行,git 将查找错误的密钥进行身份验证

于 2014-05-15T00:36:25.897 回答