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

git push heroku master

但会出现以下错误:

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

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


当前回答

我也有同样的问题,下面的步骤对我有效,

->heroku login

abc@gmail.com密码(&P)

->cd C:\Users\yourusername\.ssh    (OR for cygwin shell ->cd ~/.ssh)

->ssh密钥生成-t rsa-f id_rsa

如果询问任何密码,请不要使用空白,填写密码,但不要忘记。

生成密钥后,您需要添加它,如下所示

$ ssh-add

给heroku

->heroku keys:add "id_rsa.pub"

将目录更改为工作区,然后

->git clone git@heroku.com:stark-dawn-1234.git -o heroku

使用上面设置的密码短语。


实际上,我也删除了下面的文件,但不确定它们是imp,

C: \Users\yourusername.heroku\credientals和C:\Users\yourusername.ssh\known_hosts

其他回答

要遵循的顺序

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

当执行第二条语句时,它会要求输入,只需按Enter(回车)三次,就会添加一个键。

我也有同样的问题,下面的步骤对我有效,

->heroku login

abc@gmail.com密码(&P)

->cd C:\Users\yourusername\.ssh    (OR for cygwin shell ->cd ~/.ssh)

->ssh密钥生成-t rsa-f id_rsa

如果询问任何密码,请不要使用空白,填写密码,但不要忘记。

生成密钥后,您需要添加它,如下所示

$ ssh-add

给heroku

->heroku keys:add "id_rsa.pub"

将目录更改为工作区,然后

->git clone git@heroku.com:stark-dawn-1234.git -o heroku

使用上面设置的密码短语。


实际上,我也删除了下面的文件,但不确定它们是imp,

C: \Users\yourusername.heroku\credientals和C:\Users\yourusername.ssh\known_hosts

除了处理SSH密钥,您还可以尝试Heroku的新测试版HTTP Git支持。它只使用您的API令牌并在端口443上运行,因此无需使用SSH密钥或端口22。

要使用HTTP Git,首先确保Toolbelt已更新,并且您的凭据是最新的:

$ heroku update
$ heroku login

(这一点很重要,因为Heroku HTTP Git的认证方式与Toolbelt的其他方式略有不同)

在测试期间,通过将--httpgit标志传递给相关的heroku应用程序:create、heroku git:clone和heroku git:remote命令,可以获得HTTP。要创建新的应用程序并使用HTTP Git远程配置它,请运行以下命令:

$ heroku apps:create --http-git

要将现有应用程序从SSH更改为HTTP Git,只需从计算机上的应用程序目录运行以下命令:

$ heroku git:remote --http-git
Git remote heroku updated

有关如何为Heroku设置HTTP Git的详细信息,请查看开发中心文档。

推送时使用

git push heroku production:master 

使用主目录~/.ssh/id_rsa下的公钥

要解决此问题

您应该以其他用户身份登录,可能是root用户

sudo su 

然后通过发出以下命令重新开始

heroku keys:clear //removes existing keys
ssh-keygen -t rsa //generates a new key in ~/.ssh folder (set a password)
heroku keys:add   //uploads the new key, ~/.ssh/id_rsa is uploaded                      
git push heroku production:master

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

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