Heroku - 添加了SSH公钥,但仍然收到Permission denied(publickey)错误

时间:2012-11-13 04:14:35

标签: git heroku

之前多次上传到Heroku,这次不知道出了什么问题 - 也许是因为我正在使用公共互联网?

无论如何,我添加了一个新的公钥

>heroku keys:add
Found existing public key: C:/Users/Chris/.ssh/id_rsa.pub
Uploading SSH public key C:/Users/Chris/.ssh/id_rsa.pub...done

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

为什么我不能推送到heroku?

我检查了我的钥匙

  

heroku键

我的终端正确,所以它应该工作。任何人都有所了解?

2 个答案:

答案 0 :(得分:4)

也许ssh会话不知道在哪里可以找到与您的公钥相关联的私有密钥,如果%HOME%未定义到C:/Users/Chris,则可能会发生这种情况。
(请记住,Windows上没有默认定义HOME

你可以:

  • 确保已设置HOME
  • 定义%HOME%/.ssh/config文件
Host heroku
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile /C/Users/Chris/.ssh/id_rsa # location and name of your private key
TCPKeepAlive yes 
User git
  • 在bash会话下,check the permissions(适用于.ssh和密钥)。
  • 克隆heroku repo:git clone heroku:yourRepo
  • 做一些提交并从那里推。

答案 1 :(得分:2)

你正在使用Git推送你的更改,而Git使用SSH,而不是Heroku。

根据我的经验,运行heroku keys不会提供有关加载到SSH身份验证代理中的身份的信息。为此,您需要运行ssh-add -l,它将列出加载到其中的所有身份指纹。

要将一个标识加载到SSH身份验证代理中,您需要运行:ssh-add -K ~/.ssh/your_private_key。使用 -K 会将密码保存在您的钥匙串中。

如果您在远程Heroku服务器中也有公钥,这将有效。