部署heroku代码时,权限被拒绝(公钥)。 致命:远端意外挂断

在尝试将代码部署到Heroku时,用户遇到权限被拒绝的错误。解决方案包括:生成新的SSH密钥,确保正确设置环境变量,检查.ssh配置文件,清理并重新上传密钥,以及在某些情况下更改Windows的SSH路径设置。问题可能由多个因素引起,如Git寻找错误的密钥文件或Heroku API的暂时性停机。
摘要由CSDN通过智能技术生成

我正在尝试使用以下命令行将代码部署到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-keygenkeys: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出现停机时间,则在尝试推送时会出现此错误。

校验:

https://status.heroku.com/

吓得发抖之前。


#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密钥。 所以这是我要解决的步骤

  1. 转到“文档和设置”文件夹下的.ssh目录,并删除了git hub键
  2. 运行命令heroku keys:add

上面的命令要求我生成一个新密钥,然后是输出找不到现有的公共密钥。 您想生成一个吗? [Yn]是生成新的SSH公钥。 上载SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub ...已完成! 已弃用'heroku'宝石,并替换为Heroku Toolbelt,可从https://toolbelt.heroku.com下载并安装。

  1. 重新运行命令heroku keys:add

上面的命令不会提供以下输出:找到现有的公钥:C:/ Documents and Settings / Admin / .ssh / id_rsa.pub上传SSH公钥C:/ Documents and Settings / Admin / .ssh / id_rsa.pub.。完成

  1. 现在使用git push heroku master

对我来说,使用上述步骤解决了该问题,并能够在云上部署该应用程序。


#12楼

尝试修复“磁盘工具”(Mac OS X)中的权限。 帮助过我


#13楼

我遇到了同样的问题; 遵循以下步骤应该会有所帮助:

  1. 首先,登录:heroku登录
  2. 清除所有键:heroku键:清除
  3. 删除.ssh/ folder中本地文件夹中的所有文件(所有.pub文件和know_host
  4. 再次登录: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\\UserNameHOME路径

要查看当前主目录,请执行以下操作: echo $HOMEecho %HOME% (Windows)

要正确设置HOME目录(正确地说,我的意思是.ssh目录的父目录,以便ssh可以在正确的目录中查找密钥),请参考以下链接:

  1. SO答案关于如何永久设置Unix环境变量

  2. 因此,关于ssh在错误目录中寻找密钥的问题及其解决方案。


#22楼

这是解释如何管理ssh密钥的链接: https : //devcenter.heroku.com/articles/keys#adding-keys-to-heroku


#23楼

上面给出的答案确实有效,但是发现我需要做一些额外的步骤才能起作用。

  1. 我使用指南删除了所有id_rsa *文件并生成了新的SSH。
  2. 然后,我破坏了heroku应用程序。 删除了〜/ .heroku / credentials文件。
  3. “ heroku create”命令(由于凭据文件已删除,因此将提示您输入电子邮件/密码。
  4. 最后键入“ heroku keys:add”,它将上传默认的〜/ .ssh / id_rsa.pub文件。
  5. 有用! 嗯.... 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值