请原谅一点挫折,我会尽力控制,因为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没有任何见解正在进行中;我只是在没有追索权的情况下将头撞在键盘上,而是希望Google的全能之神能够回答它。谷歌没有回答它(好吧,让我把它拿回来,我已经看到了十几种方法来回答这个问题。)
对于一个应该很容易的系统,这是一个笑话。我喜欢Heroku的想法,但在花了五个我们完全没有没有完成之后,我想也许这是错误的选择。
答案 0 :(得分: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密钥,然后再次尝试第一步
第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
答案 1 :(得分:13)
你的heroku密钥和github密钥不同步。
确定要使用的密钥(建议创建新密钥,即 heroku_rsa)。
将密钥添加到github。
使用<{1}}
答案 2 :(得分:2)
我遇到了同样的问题,这是我的理论关于发生了什么:
很久以前我注册了Heroku,给了我github公钥。在尝试通常的git push heroku master
时,会查找我的私钥,该密钥位于~/.ssh/github_rsa
。然后,它会以您发布的消息静默地失败。
但是,我稍后尝试ssh
使用-i
标志指向另一台服务器,以指定我的“身份文件”(即私钥),并提示我输入私钥的密码。 “解锁”私钥后,git push heroku master
命令有效。一些结论:
ssh
会提示您输入身份文件的密码,但git
却不会。{/ li>
ssh
)解锁身份文件,它将保持解锁状态,以便git
使用。keytool
。 答案 3 :(得分:2)
Permission denied (publickey) when deploying heroku code. fatal: The remote end hung up unexpectedly
我认为这可能有你的解决方案,它至少对我有用
答案 4 :(得分: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
答案 5 :(得分:0)
如果其他解决方案都不适合您,请确保您使用 帐户登录linux shell, root < < / em> 帐户。
这样,如果您使用的用户不是ssh密钥的所有者,git会查找错误的密钥进行身份验证