我试图使用以下命令行将我的代码部署到Heroku:
git push heroku master
但是收到以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经上传了我的公共SSH密钥,但仍然出现这个错误。
我试图使用以下命令行将我的代码部署到Heroku:
git push heroku master
但是收到以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经上传了我的公共SSH密钥,但仍然出现这个错误。
heroku keys:add ~/.ssh/id_rsa.pub
如果你没有公钥,Heroku会自动提示你添加一个公钥,这很顺畅。只需使用:
heroku keys:add
清除所有以前的键:
heroku keys:clear
要显示所有现有的键,请执行以下操作:
heroku keys
编辑:
上述方法对我来说似乎不起作用。我曾经搞乱了HOME
环境变量,因此SSH在错误的目录中搜索密钥。
为确保SSH在正确的目录中检查密钥,请执行以下操作:
ssh -vT git@heroku.com
这将会显示以下(示例)行:
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Wrong/Directory/.ssh/identity type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_rsa type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_4.6
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Wrong/Directory/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Wrong/Directory/.ssh/identity
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_rsa
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).
根据上述提示,我们可以看到 ssh 在 /c/Wrong/Directory/.ssh
目录中查找密钥,但这并不是我们刚刚通过 heroku keys:add ~/.ssh/id_rsa.pub
添加到 Heroku 的公钥所在的位置。(请注意,在 Windows 操作系统中,~
是指 HOME
路径,在 Windows 7/8 中为 C:\Users\UserName
。)
要查看您当前的主目录,请执行以下操作:echo $HOME
或 echo %HOME%
(Windows)。
要正确设置您的 HOME
目录(正确指的是 .ssh
目录的父目录,以便 ssh 可以在正确的目录中查找密钥),请参考以下链接:
heroku keys:add
。 - vansanssh-keygen -t rsa -C“your_email@youremail.com”
创建另一个file.pub文件,并在此答案中推荐的命令中使用该文件。 - Tom Roggero我遇到了同样的问题,下面的步骤对我有用:
->heroku login
abc@gmail.com 和密码
->cd C:\Users\yourusername\.ssh (OR for cygwin shell ->cd ~/.ssh)
->ssh-keygen -t rsa -f id_rsa
如果要求输入任何密码,不要留空,请填写一个密码,但不要忘记它。
生成密钥后,您需要将其添加,如下所示:
$ ssh-add
->heroku keys:add "id_rsa.pub"
将目录更改为工作区,然后
->git clone git@heroku.com:stark-dawn-1234.git -o heroku
使用您设置的口令短语。
实际上,我还删除了以下文件,但不确定它们是否重要:
C:\Users\yourusername.heroku\credientals 和 C:\Users\yourusername.ssh\known_hosts
ssh-add /path/to/my/key
- Rob这个问题折磨了我几天。
这可能会有帮助。
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
User
前应该有一个换行符。此外,它抱怨 #
注释,所以我只是将其删除了。 - Erik J这里是一篇链接,介绍如何管理你的SSH密钥:https://devcenter.heroku.com/articles/keys#adding-keys-to-heroku
我遇到了同样的问题,因为我没有公钥,所以我执行了以下操作:
heroku keys:clear
heroku keys:add
那将生成一个公钥,然后它能够良好地工作。如果你是Windows用户,那么这里的其他解决方案可能无法解决你的问题。
我使用的是Windows 7 64位 + Git-1.7.7.1-preview20111027,解决方法是将我的密钥从C:\users\user\.ssh
复制到C:\Program Files (x86)\Git\.ssh
。这就是当向Heroku推送时,该git客户端查找密钥的位置。
希望这可以帮助你。
这是对我有效的解决方案:
ssh-add ~/.ssh/my_heroku_key_rsa
chmod 600 ~/.ssh/heroku_rsa
- Arnaud Brousseau分享我的经验:
Git(我自己安装的)正在寻找名为“id_rsa”的密钥。
所以我尝试将我的密钥重命名为“id_rsa”和“id_rsa.pub”,然后它就可以工作了。
顺便说一句,我确信还有其他的方法可以做到这一点,但是我还没有深入研究过。
heroku keys:remove //removes the existing key
ssh-keygen -t rsa //generates a new key in ~/.ssh folder
heroku keys:add //uploads the new key, if no arguments r passed then the key generated
//in default directroy i.e., ~/.ssh/id_rsa is uploaded
git push heroku
这应该可以工作。
我花了3天时间尝试各种可能的组合,试图让它正常工作--最终我尝试使用DSA密钥,它成功了。
如果RSA无法正常工作,请尝试使用DSA。
(我使用的是Ubuntu 11.10、ruby 1.8.7、heroku 2.15.1)
heroku login
命令,然后输入我的邮箱和密码,再尝试一次即可。 - Alejandro Veintimilla