我正在尝试使用以下命令行将代码部署到heroku:

git push heroku master

但会出现以下错误:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我已经上传了我的公共SSH密钥,但仍然会出现此错误。


当前回答

这个问题困扰了我几天。

这可能会有所帮助。

1) 看看你现在在Heroku有什么钥匙。

$ heroku keys
=== 1 key for joe@example.com
ssh-dss AAAAB8NzaC...DVj3R4Ww== joe@workstation.local

2) 构建~/.ssh/config文件:

$ sudo vim ~/.ssh/config

使用此信息编辑

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User joe@workstation.local

其他回答

我必须这样做:

$ ssh-keygen -t rsa  
$ heroku keys:add  

然后它奏效了:

$ git push heroku master  

如果其他答案对你不起作用。试试这个!

有时候,你只需要再推一次。由于网络连接缓慢(当您下载或使用p2p时),我今天遇到了这种情况。

请参见下面的截图:

推对我很有效,然后突然停了下来。

如果heroku api正在经历宕机,那么当您尝试推送时会出现此错误。

检查:

https://status.heroku.com/

在极度紧张之前。

如果要使用“sudo”,例如:

sudo git clone git@heroku.com......... -o heroku

您还应该为root用户生成ssh密钥。

sudo su
cd /root/.ssh  
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub

它会奏效的。

如果不使用root用户,请在用户目录中生成ssh密钥。

cd /home/user/.ssh

对不起,如果我的句子搞砸了。。。

上面给出的答案确实有效,但我发现我需要做一些额外的步骤才能奏效。

我删除了所有id_rsa*文件,并使用本指南生成了一个新的SSH。然后,我销毁了heroku应用程序。删除了~/.heroku/credentials文件。“heroku create”命令(由于凭据文件已删除,它将提示您输入电子邮件/密码。最后键入“heroku-keys:add”,它将上载默认的~/.ssh/id_rsa.pub文件。它起作用了!好YMMV,但我真的希望这能对我有帮助,因为我一整天都在努力解决这个问题!哈哈