我正在尝试使用以下命令行将代码部署到heroku:
git push heroku master
但出现以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经上传了我的公共SSH密钥,但是它仍然出现此错误。
#1楼
我遇到了同样的问题,因为我没有公共密钥,所以我这样做了:
heroku keys:clear
heroku keys:add
这将生成一个公钥,然后运行良好
#2楼
如果要使用“ sudo”,则示例:
sudo git clone git@heroku.com......... -o heroku
您还应该为根用户生成ssh密钥。
sudo su
cd /root/.ssh
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub
它会工作。
如果不使用root用户,请在用户目录中生成ssh密钥。
cd /home/user/.ssh
对不起,如果我的句子搞砸了...
#3楼
如果您已经上传了密钥,请尝试删除密钥,然后使用新密钥重新上传。
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
这应该工作。
#4楼
分享我的经验:
Git(我自己安装的)正在寻找名为“ id_rsa”的密钥。
因此,我尝试将我的密钥重命名为“ id_rsa”和“ id_rsa.pub”,并且可以正常工作。
顺便说一句,我敢肯定还有另一种方法可以做到,但是我还没有深入。
#5楼
我必须做:
$ ssh-keygen -t rsa
$ heroku keys:add
然后工作了:
$ git push heroku master
#6楼
一个命令起作用:
heroku keys:add
如果不存在,它将创建一个。
#7楼
当我的机器上安装了TortoiseGIT时,我遇到了这个问题。 更改环境变量GIT_SSH
"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"
至
"c:\Program Files (x86)\Git\bin\ssh.exe"
并按照本教程的ssh-keygen
和keys:add
!
#8楼
检查您的.ssh配置中的heroku。 转到.ssh文件夹并打开配置文件
cd ~/.ssh
subl config
'subl'用于Sublime Text,但是您可以使用所需的任何编辑器。 查找“ IdentityFile”行,并确保列出了非公共密钥:
IdentityFile "/Users/ircmullaney/.ssh/my_ssh"
不
IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"
对我来说就做到了。 我不确定为什么我的配置文件中有公共版本,但确实如此,并且抛出了错误:
Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.
#9楼
推送为我工作,然后突然停止。
如果heroku api出现停机时间,则在尝试推送时会出现此错误。
校验:
吓得发抖之前。
#10楼
尝试所有这些想法后,我仍然遇到问题。 这是我的问题:
我的远程heroku存储库被选中。 我刷新如下:
git remote -v
然后删除错误的heroku之一:
git remote rm heroku
然后添加新的
git remote add heroku git@heroku.com:sitename.git
您可以从Heroku设置页面获取应用程序的站点名称。 祝好运!
#11楼
我遇到的问题是在Windows上,无论何时运行“ heroku keys:add”,它总是选择github密钥。 所以这是我要解决的步骤
- 转到“文档和设置”文件夹下的.ssh目录,并删除了git hub键
- 运行命令heroku keys:add
上面的命令要求我生成一个新密钥,然后是输出找不到现有的公共密钥。 您想生成一个吗? [Yn]是生成新的SSH公钥。 上载SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub ...已完成! 已弃用'heroku'宝石,并替换为Heroku Toolbelt,可从https://toolbelt.heroku.com下载并安装。
- 重新运行命令heroku keys:add
上面的命令不会提供以下输出:找到现有的公钥:C:/ Documents and Settings / Admin / .ssh / id_rsa.pub上传SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub.。完成
- 现在使用git push heroku master
对我来说,使用上述步骤解决了该问题,并能够在云上部署该应用程序。
#12楼
尝试修复“磁盘工具”(Mac OS X)中的权限。 帮助过我
#13楼
我遇到了同样的问题; 遵循以下步骤应该会有所帮助:
- 首先,登录:heroku登录
- 清除所有键:heroku键:清除
- 删除
.ssh/ folder
中本地文件夹中的所有文件(所有.pub
文件和know_host
) - 再次登录:heroku登录-您将无提示输入提示,因此请按照屏幕上的说明进行操作。
#14楼
首先,请确保隐藏文件在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中做到了。 虽然程序在其他方面也应该相同。
#15楼
我也有这个问题。 我正在使用Mac OSX。 我修复的方法是以管理员身份登录
苏多苏
密码
#16楼
dmajkic的解决方案终于对我有所帮助:
对于Windows用户,这可能意味着:git client无法找到您的密钥。 检查c:\\ Users \\ UserName.ssh \\中的注册表项! 环境变量HOME = c:\\ Users \\ UserName \\
#17楼
遵循的顺序
$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add
当执行第二条语句时,它将要求输入,只需按Enter (回车)3次,将添加一个键。
#18楼
这对我有用。 heroku网站未添加到您的已知主机。 转到window-other- show view-git-git存储库。 从那里克隆存储库。 克隆后,删除刚刚创建的存储库,然后从文件菜单导入它。 这样做是因为克隆存储库时,它不会将其添加到资源管理器视图中。 现在,您应该拥有git信息库和资源管理器视图。
#19楼
对于所有在Windows 7上尝试了上述所有功能但仍然无法正常工作的人,这是我已经完成的工作:-从Git目录C:\\ Program Files(x86)\\ Git \\中打开GitBash.exe。 t打开命令提示符,此操作将无效)。 - 如上所述添加以下内容,但您必须删除#
Host heroku.com
Hostname heroku.com
Port 22
IdentitiesOnly yes
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes
User joe@workstation.local
现在运行git push heroku master ,它应该可以工作。
#20楼
听起来您的~/.ssh/authorized_keys
文件未正确设置。 验证:
- 这是正确的路径。
- 该文件的权限为0600。
-
~/.ssh
的权限为0700。
#21楼
您必须将公钥上传到Heroku:
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的公共密钥的地方(使用heroku keys:add ~/.ssh/id_rsa.pub
)( 请注意,在Windows OS中~
指的是Windows heroku keys:add ~/.ssh/id_rsa.pub
中的C:\\Users\\UserName
的HOME
路径 )
要查看当前主目录,请执行以下操作: echo $HOME
或echo %HOME%
(Windows)
要正确设置HOME
目录(正确地说,我的意思是.ssh
目录的父目录,以便ssh可以在正确的目录中查找密钥),请参考以下链接:
#22楼
这是解释如何管理ssh密钥的链接: https : //devcenter.heroku.com/articles/keys#adding-keys-to-heroku
#23楼
上面给出的答案确实有效,但是发现我需要做一些额外的步骤才能起作用。
- 我使用此指南删除了所有id_rsa *文件并生成了新的SSH。
- 然后,我破坏了heroku应用程序。 删除了〜/ .heroku / credentials文件。
- “ heroku create”命令(由于凭据文件已删除,因此将提示您输入电子邮件/密码。
- 最后键入“ heroku keys:add”,它将上传默认的〜/ .ssh / id_rsa.pub文件。
- 有用! 嗯.... YMMV,但我确实希望这可以对我有所帮助,因为我整天都在努力解决这个问题! 哈哈
#24楼
我遇到了同样的问题,以下步骤对我有用,
->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
->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
#25楼
如果您是Windows用户,则此处的其他解决方案可能无法解决您的问题。
我使用Windows 7 64位+ Git-1.7.7.1-preview20111027,解决方案是将密钥从C:\\users\\user\\.ssh
复制到C:\\Program Files (x86)\\Git\\.ssh
。 这就是这个git客户端在推送到heroku时寻找密钥的地方。
我希望这有帮助。
#26楼
在Windows 7,64位上,上述解决方案(奥努尔·图尔汗的解决方案)对我起作用,但有一些细微的变化,如下所示
C:\Users\MyName > heroku login
输入电子邮件/密码
C:\Users\MyName >ssh-keygen -t rsa -f id_rsa
这在我的c:\\ Users \\ MyName目录(不在.ssh目录中)中生成了两个文件(id_rsa和id_rsa.pub)。
heroku keys:add id_rsa.pub
git clone git@heroku.com:some-heiku-xxxx.git -o heroku
我猜添加正确的“ id_rsa.pub”文件是最重要的。使用keygen生成公钥后,只需查看创建时的时间戳验证您是否添加了正确的密钥。
#27楼
我花了三天时间自杀,尝试各种可能的组合以使它起作用—我终于尝试制作DSA密钥,它起作用了。
如果对您不起作用,请尝试使用DSA而不是RSA。
(我正在使用Ubuntu 11.10,Ruby 1.8.7,heroku 2.15.1)
#28楼
我只想补充一点,该目录不一定是C:\\ Users \\ [用户名] \\。ssh。 这是您在其中创建公钥的目录。
例如,我在Windows中的主目录已更改为C:\\ [用户名]。 您的.ssh子文件夹中的主目录是创建密钥的最佳且最可能的位置。 您可以使用以下命令在Windows中检查主目录:
echo %HOMEPATH%
#29楼
这个问题困扰了我几天。
这可能会有所帮助。
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
#30楼
这是我的解决方案:
ssh-add ~/.ssh/my_heroku_key_rsa