Permission denied (publickey) when deploying heroku code. fatal: The remote end hung up unexpectedly
我正在尝试使用以下命令行将代码部署到heroku:
1 | git push heroku master |
但是得到以下错误:
1 2 | Permission denied (publickey). fatal: The remote end hung up unexpectedly |
我已经上传了我的公共SSH密钥,但它仍然会出现此错误。
您必须将公钥上传到Heroku:
1 | heroku keys:add ~/.ssh/id_rsa.pub |
如果您没有公钥,Heroku将提示您自动添加一个公钥,无缝工作。只需使用:
1 | heroku keys:add |
清除以前的所有密钥:
1 | heroku keys:clear |
要显示所有现有密钥:
1 | heroku keys |
编辑:
以上似乎对我没有用。我弄乱了
要确保SSH检查正确目录中的密钥,请执行以下操作:
1 | ssh -vT [email protected] |
这将显示以下(样本)行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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. |
从上面你可以看到ssh查找
要查看当前的主目录,请执行:
要正确设置
关于如何永久设置Unix环境变量的答案
有关ssh在错误的目录中查找密钥的问题以及相同的解决方案。
我有同样的问题,下面的步骤对我有用,
1 | ->heroku login |
1 | ->cd C:\Users\yourusername\.ssh (OR for cygwin shell ->cd ~/.ssh) |
如果要求任何密码不使用空白,请填写密码,但不要忘记密码。
生成密钥后,您需要添加它,就像这样
1 | $ ssh-add |
它和heroku
1 | ->heroku keys:add"id_rsa.pub" |
将目录更改为工作空间
1 | ->git clone [email protected]:stark-dawn-1234.git -o heroku |
使用您在上面设置的密码。
其实我也删除下面的文件,但不确定它们是不是,
C: Users yourusername.heroku credientals和C: Users yourusername.ssh known_hosts
这个问题困扰了我几天。
这可能有所帮助。
1)找出你现在在Heroku中有哪些键。
1 2 3 |
2)构建一个?/ .ssh / config文件:
1 | $ sudo vim ~/.ssh/config |
使用此信息进行编辑
1 2 3 4 5 6 7 | Host heroku.com Hostname heroku.com Port 22 IdentitiesOnly yes IdentityFile ~/.ssh/ssh-dss # location and name of your private key TCPKeepAlive yes User [email protected] |
以下是解释如何管理ssh密钥的链接:http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku
我有同样的问题,因为我没有公钥,所以我做了:
1 2 | heroku keys:clear heroku keys:add |
这将生成一个公钥,然后它运作良好
如果您是Windows用户,其他解决方案可能无法解决您的问题。
我使用Windows 7 64-Bit + Git-1.7.7.1-preview20111027,解决方案是将我的密钥从
我希望这有帮助。
这是我的解决方案:
1 | ssh-add ~/.ssh/my_heroku_key_rsa |
分享我的经验:
Git(我自己的安装)正在寻找名为'id_rsa'的密钥。
所以我尝试将我的密钥重命名为'id_rsa'和'id_rsa.pub'并且它有效。
顺便说一句,我确信还有另外一种方法可以做到,但我看起来并没有更深入。
如果您已上传密钥,请尝试删除密钥,然后重新上传
它带有一把新钥匙。
1 2 3 4 5 | 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密钥而且它有效。
如果它不适合您,请尝试DSA而不是RSA。
(我使用的是Ubuntu 11.10,ruby 1.8.7,heroku 2.15.1)
在Windows 7,64位上,上面的解决方案(Onur Turhan)对我有用,稍微改动如下
1 | C:\Users\MyName > heroku login |
输入电子邮件/密码
1 | C:\Users\MyName >ssh-keygen -t rsa -f id_rsa |
这在我的c: Users MyName目录中生成了两个文件(id_rsa和id_rsa.pub)(不在.ssh目录中)
1 2 | heroku keys:add id_rsa.pub git clone [email protected]:some-heiku-xxxx.git -o heroku |
我想添加正确的"id_rsa.pub"文件是最重要的。使用keygen生成公钥后,只需通过查看创建时的时间戳来验证是否正在添加正确的密钥。
在我的机器上安装TortoiseGIT时遇到了这个问题。从中更改环境变量
1 | "c:\Program Files\TortoiseGit\bin\TortoisePlink.exe" |
至
1 | "c:\Program Files (x86)\Git\bin\ssh.exe" |
并且在本教程中使用
一个命令有效:
1 | heroku keys:add |
如果它不存在,它将成为一个。
Pushing正在为我工??作,然后突然停了下来。
如果heroku api遇到停机时间,当您尝试推送时会出现此错误。
校验:
https://status.heroku.com/
在吓坏了之前。
顺序如下
1 2 3 | $ heroku login $ ssh-keygen -t rsa $ heroku keys:add |
当执行第二个语句时,它会要求输入,只需按Enter(返回)三次,就会添加一个键。
上面给出的答案可行,但发现我需要在它工作之前做一些额外的步骤。
对于那些在Windows 7上尝试过上述所有内容并且仍无法正常工作的人来说,这就是我所做的:
- 从Git目录C: Program Files(x86) Git 打开GitBash.exe(不要打开命令提示符,这不起作用)。
- 如上所述添加以下内容,但您必须删除#
1 2 3 4 5 6 7 | Host heroku.com Hostname heroku.com Port 22 IdentitiesOnly yes IdentityFile ~/.ssh/ssh-dss TCPKeepAlive yes User [email protected] |
现在运行git push heroku master,它应该工作。
检查你的.ssh配置是否为heroku。转到.ssh文件夹并打开配置文件
1 2 | cd ~/.ssh subl config |
'subl'适用于Sublime Text,但您可以使用您想要的任何编辑器。查找"IdentityFile"行,并确保列出了非公钥:
1 | IdentityFile"/Users/ircmullaney/.ssh/my_ssh" |
不
1 | IdentityFile"/Users/ircmullaney/.ssh/my_ssh.pub" |
这样做对我来说。我不确定为什么我的配置文件中有公共版本,但确实如此,它抛出了错误:
1 | Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open. |
我遇到的问题是在Windows上,每当我运行"heroku keys:add"时,它都会选择github密钥。以下是我解决问题的步骤
heroku键:添加
上面的命令让我生成一个新的键,然后是输出
找不到现有的公钥。
你想生成一个吗? [Yn] Y.
生成新的SSH公钥。
上传SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub ...完成
! 'heroku'gem已被弃用,并替换为Heroku Toolbelt,从https://toolbelt.heroku.com下载并安装。
heroku键:添加
上面的命令不会给出以下输出
找到现有公钥:C:/ Documents and Settings / Admin / .ssh / id_rsa.pub
上传SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub ...完成
对我来说,使用上述步骤解决了问题,并能够在云上部署应用程序。
听起来你的
- 它是在正确的道路上。
- 该文件的权限是0600。
-
~/.ssh 的权限是0700。
我遇到了同样的问题;以下步骤应该有所帮助:
在尝试了所有这些想法后,我仍然遇到了问题。这是我的问题:
我的远程heroku存储库很有趣。我刷新如下:
1 | git remote -v |
然后删除错误的heroku:
1 | git remote rm heroku |
然后添加新的
1 | git remote add heroku [email protected]:sitename.git |
您可以从您的应用程序的Heroku设置页面获取网站名称。祝好运!
我必须做:
1 2 | $ ssh-keygen -t rsa $ heroku keys:add |
然后它工作:
1 | $ git push heroku master |
首先确保在Mac中可以看到隐藏文件。
如果不这样做:
-
打开终端并输入
defaults write com.apple.Finder
AppleShowAllFiles TRUE -
killall Finder
下一步:
-
转到
Users/user_name/.ssh/ 删除了所有文件。 -
在
ssh-keygen -t dsa 中打开终端类型 -
然后
heroku keys:add ~/.ssh/id_dsa.pub
注:我在Mac OSX 10.7.2 Lion中做到了。虽然程序在其他方面也应该相同。
您也可以尝试Heroku的新beta HTTP Git支持,而不是处理SSH密钥。 它只使用您的API令牌并在端口443上运行,因此没有SSH密钥或端口22来处理。
要使用HTTP Git,首先要确保更新Toolbelt并确保您的凭据是最新的:
1 2 | $ heroku update $ heroku login |
(这很重要,因为Heroku HTTP Git的验证方式与Toolbelt的其余部分略有不同)
在测试期间,您可以通过将
1 | $ heroku apps:create --http-git |
要将现有应用程序从SSH更改为HTTP Git,只需从计算机上的应用程序目录运行此命令:
1 2 | $ heroku git:remote --http-git Git remote heroku updated |
查看开发人员中心文档,了解如何为Heroku设置HTTP Git的详细信息。
如果其他答案对你不起作用。试试这个!
有时您需要的只是再次推动。由于互联网连接速度缓慢(当您下载或使用p2p时),它今天发生在我身上。
请看下面的截图:
推动时使用
1 | git push heroku production:master |
使用主目录下的公钥?/ .ssh / id_rsa
解决这个问题
你应该登录,因为不同的用户可能是root用户
1 | sudo su |
然后通过发出以下命令重新开始
1 2 3 4 | 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 |
这对我有用。 heroku站点未添加到您的已知主机。转到window-other-show view-git-git存储库。从那里克隆存储库。克隆它后,删除刚刚创建的存储库,然后从文件菜单中导入它。这样做是因为克隆存储库时,它不会将其添加到资源管理器视图中。现在您应该拥有git存储库和资源管理器视图。
我只想添加该目录不一定是C: Users [用户名] .ssh。它是您在其中创建公钥的目录。
例如,我在Windows中的主目录已更改为C: [用户名]。 .ssh子文件夹中的主目录是您创建密钥的最佳位置。您可以使用以下命令检查Windows中的主目录:
1 | echo %HOMEPATH% |
我也有这个问题。我正在使用Mac OSX。我修复的方式是以管理员身份登录
sudo su
password
如果你想使用"sudo",例如:
1 | sudo git clone [email protected]......... -o heroku |
您还应该为root用户生成ssh密钥。
1 2 3 4 5 | sudo su cd /root/.ssh ssh-keygen -t rsa .... heroku keys:add id_rsa.pub |
它会工作的。
如果您不使用root用户,请在您的用户目录中生成ssh密钥。
1 | cd /home/user/.ssh |
对不起,如果我的句子搞砸了......
尝试修复"磁盘工具"(Mac OS X)中的权限。帮助过我
我重新安装了heroku toolbelt,它工作正常。
dmajkic的解决方案最终帮助了我:
对于Windows用户,这可能意味着:git客户端无法找到您的密钥。
检查c: Users UserName.ssh 和中的键!环境变量HOME = c: Users UserName