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

git push heroku master

但会出现以下错误:

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

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


当前回答

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

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

请参见下面的截图:

其他回答

我只想补充一点,该目录不一定是C:\Users\[用户名]\.ssh。它是您在其中创建公钥的目录。

例如,我在Windows中的主目录已更改为C:\[用户名]。ssh子文件夹中的主目录是创建密钥的最佳位置,也是最可能的位置。您可以使用以下命令检查Windows中的主目录:

    echo %HOMEPATH%

尝试修复磁盘实用程序(Mac OS X)中的权限。帮助了我

我花了三天的时间尝试各种可能的组合,试图让它发挥作用——我最终尝试了制作DSA密钥,结果成功了。

如果不适合您,请尝试DSA而不是RSA。

(我使用的是Ubuntu 11.10、ruby 1.8.7、heroku 2.15.1)

如果您是windows用户,这里的其他解决方案可能无法解决您的问题。

我使用的是Windows 7 64位+Git-1.7.7.1-review20111027,解决方案是将我的密钥从C:\users\user\.ssh复制到C:\Program Files(x86)\Git\.ssh。这是Git客户端在推送到heroku时查找密钥的地方。

我希望这有帮助。

检查heroku的.ssh配置。转到.ssh文件夹并打开配置文件

cd ~/.ssh
subl config

“subl”用于Sublime文本,但您可以使用任何您想要的编辑器。查找“IdentityFile”行,并确保它列出了非公钥:

IdentityFile "/Users/ircmullaney/.ssh/my_ssh"

not

IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"

这对我来说很有用。我不知道为什么我的配置文件中有公共版本,但它确实有,并且抛出了错误:

Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.