我正在尝试使用以下命令行将代码部署到heroku:
git push heroku master
但出现以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经上传了我的公共SSH密钥,但是它仍然出现此错误。
heroku login
写电子邮件和密码,然后重试。
我正在尝试使用以下命令行将代码部署到heroku:
git push heroku master
但出现以下错误:
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
我已经上传了我的公共SSH密钥,但是它仍然出现此错误。
heroku login
写电子邮件和密码,然后重试。
Answers:
您必须将公钥上传到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中~
是指HOME
winC:\Users\UserName
7/8 中的路径是)
要查看您当前的主目录,请执行:echo $HOME
或echo %HOME%
(Windows)
要HOME
正确设置目录(正确的说,我是指目录的父目录.ssh
,以便ssh可以在正确的目录中查找键),请参考以下链接:
heroku keys:add
ssh-keygen -t rsa -C "your_email@youremail.com"
如果仍然有错误,也尝试创建另一个file.pub并在此答案的推荐命令中使用该文件
我遇到了同样的问题,以下步骤对我有用,
->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
Github for Windows
,但没有id_rsa文件。
git bash
命令提示符下执行此操作才能运行ssh-keygen。谢谢。
这个问题困扰了我几天。
这可能会有所帮助。
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
在最后一行之前应该有一个换行符。另外,它抱怨该#
评论,因此我将其删除。
host
信息添加到我的配置文件中为我解决了这个问题。我创建了一个heroku rsa密钥,当尝试尝试时,对heroku.pub的默认权限引发了错误git push
。我不得不chmod 600 heroku.pub
,然后当我推动它工作时。
IdentityFile ~/.ssh/ssh-dss
是私钥的路径。您要在此处输入私钥,而不是公共密钥。
这是解释如何管理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
。这就是这个git客户端在推送到heroku时寻找密钥的地方。
我希望这有帮助。
这是我的解决方案:
ssh-add ~/.ssh/my_heroku_key_rsa
chmod 600 ~/.ssh/heroku_rsa
如果您已经上传了密钥,请尝试删除密钥,然后使用新密钥重新上传。
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
这应该工作。
Must specify KEY to remove
我花了三天时间自杀,尝试各种可能的组合以使其正常工作-我终于尝试制作DSA密钥,它起作用了。
如果对您不起作用,请尝试使用DSA而不是RSA。
(我正在使用Ubuntu 11.10,Ruby 1.8.7,heroku 2.15.1)
在Windows 7,64 bit上,上述解决方案(Onur Turhan的解决方案)对我起作用,但有一些细微的变化,如下所示
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生成公钥后,只需查看创建时的时间戳来验证您是否添加了正确的密钥。
一个命令起作用:
heroku keys:add
如果不存在,它将创建一个。
heroku keys:add
不是一个完整的答案。
当我的机器上安装了TortoiseGIT时,我遇到了这个问题。更改环境变量GIT_SSH
后
"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"
至
"c:\Program Files (x86)\Git\bin\ssh.exe"
并按照本教程有ssh-keygen
和keys:add
,它的作品!
遵循的顺序
$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add
在执行第二条语句时,它会要求输入,只需按Enter(回车)键三下,就会添加一个键。
对于所有在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,它应该可以工作。
听起来您的~/.ssh/authorized_keys
文件未正确设置。验证:
~/.ssh
0700。检查您的.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.
我遇到的问题是在Windows上,无论何时运行“ heroku keys:add”,它总是选择github密钥。所以这是我遵循的解决问题的步骤
上面的命令要求我生成一个新密钥,然后是输出找不到现有的公共密钥。您想生成一个吗?[Yn]是生成新的SSH公钥。上载SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub ...已完成!已弃用'heroku'宝石,并替换为Heroku Toolbelt,可从https://toolbelt.heroku.com下载并安装。
上面的命令不会提供以下输出:找到现有的公共密钥:C:/ Documents and Settings / Admin / .ssh / id_rsa.pub上传SSH公共密钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub.。完成
对我来说,使用上述步骤解决了该问题,并能够在云上部署该应用程序。
我遇到了同样的问题;遵循以下步骤应该会有所帮助:
.pub
文件(和know_host
中的所有文件).ssh/ folder
Permission denied (publickey).
首先,请确保隐藏文件在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中做到了。虽然程序在其他方面也应该相同。