Heroku“权限被拒绝(public key)致命: 无法从远程存储库读取”的问题

我已经找了好几个小时,想找到一个看似容易解决的问题的解决方案。这并不是说我的研究没有结果,而是我的研究发现了这么多不同的解决方案——没有一个奏效。

无论如何,我只是无法从我的 Mac 上的 Heroku 存储库中进行推送、拉取或获取操作。每次尝试都会给我带来以下错误(仿佛它在嘲笑我) :

“拒绝(公钥) . 致命: 无法从远程读取 储存库。」

我尝试(并重新尝试)以许多不同的方式修复它。正如我所说,过去两天的大部分时间我都在寻找答案。以下是我尝试过的一些方法:

  • Heroku 键: clear 后跟 heroku 键: add
  • 用 ssh-keygen-t rsa 自己重新生成一个 ssh 密钥
  • 清除我的. ssh 目录,然后是 heroku 键: clear,然后是生成 ssh 键
  • 删除我在 heroku 上的应用程序并重新创建一个(幸运的是没有太多)

我可以很好地从我的 GitHub 存储库中获取,所以我知道它不是网络连接(pingheroku 也可以工作)。

作为一个临时解决方案(我希望不要变成永久解决方案) ,我已经登录到我的 Ubuntu Amazon AWS ec2实例。往返于 Heroku 之间非常有效。由于这个原因,我仍然觉得问题在于 Mac 上的 ssh 键。两把钥匙都在我的 Heroku 账户里。电子邮件地址是否在关键事项的末尾?

编辑: 我可以很好地从 GitHub 进行推和拉(但是我没有使用 ssh) ,那么为什么不使用 Heroku 呢?

在这一点上,我愿意尝试任何事情。谢谢!

106523 次浏览

我只是想告诉大家,我找到了自己问题的答案。

写出我的问题让我更加清楚,我进一步研究了我认为我的问题在哪里: ssh 键

事实证明我是对的。问题不在于密钥本身,而在于我没有将它添加到本地 Mac 的已知 ssh 密钥列表中。因此,即使我的 Heroku 帐户上传了正确的密钥,我的 Mac 也无法通过它进行身份验证,因为它无法在我的电脑上找到那个密钥。解决办法?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

我愿意相信 https://help.github.com/articles/error-permission-denied-publickey是一个很好的参考。

我知道这个问题已经有答案了。但我想补充我的解决方案,因为它可能有助于其他人在未来。.

一个常见的密钥错误是: Permission denied (publickey)。您可以通过使用 keys:add通知 Heroku 您的新密钥来修复这个错误。

简而言之,请遵循以下步骤: https://devcenter.heroku.com/articles/keys

首先,如果你没有密钥,你必须创建一个密钥:

ssh-keygen -t rsa

其次,你必须给 Heroku 加上密钥:

heroku keys:add

我有完全相同的错误(在视窗7)和原因是不同的。我用不同的方法解决了这个问题,所以我想我应该在这里为其他人加上原因和解决方案。

虽然错误似乎指向 heroku,但实际上错误是说 "Heroku can't get to the git repository"。我发誓我在所有的服务器上都有相同的密钥因为我创建了它并且同时一个接一个地上传。

在花了差不多一天的时间之后,我意识到,因为 git 只显示了指纹,而不是实际的钥匙。我无法确认这把钥匙是否和我的高清或者 Heroku 上的一样。我查看了已知的主机文件,猜怎么着... 它显示了每个服务器的密钥,我能够清楚地看到 git 和 heroku 公钥不匹配。

1)我用 git bash 和 heroku keys:clear命令删除了我的密钥文件夹中的所有文件,用 github 的网站删除了它们的密钥,用 heroku 删除了它们

2)按照 github 的指令 给你生成一个新的密钥对,并将公钥上传到 git

3)使用 git bash- heroku keys:add 把同一把钥匙上传到 Heroku。

现在 git push heroku master成功了。

真是个噩梦,希望这对谁有帮助。

布莱恩

我遇到的问题是,我只在我的 GitHub 帐户上使用 https。我需要确保我的 GitHub 帐户设置为 ssh 访问,并且 GitHub 和 heroku 都使用相同的公钥。以下是我采取的步骤:

  1. 导航到 ~/。Ssh 目录并删除 id _ rsa 和 id _ rsa。如果他们在那里的话。我开始用新的钥匙,虽然可能没有必要。

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Follow the steps on gitHub to generate ssh keys
  3. Login to heroku, create a new site and add your public keys:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

有过类似的问题,并尝试了很多事情。最终对我有效的方法是在 Windows 上安装 Gnu (https://github.com/bmatzelle/gow/releases) ,并确保它使用该目录中的 ssh 工具,而不是 Git 中的 ssh 工具。一旦安装测试(确保它在您的环境 PATH 中位于 Git bin 之前)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

我使用了油灰和选美比赛,就像这里描述的: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

将密钥发送到 heroku (heroku 密钥: add c: Users Person.ssh id _ rsa. pub)后,使用

ssh -v <username>@heroku.com

并确保您的堆栈显示使用腻子-即一个工作堆栈:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

之前运行但失败的一个:

C:\Git\htest2>ssh -v <username>@gmail.com@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/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.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/Users/Person/.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/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

我对 Windows 8的看法

  1. 将带有 ssh-keygen 的目录添加到系统 PATH 变量,通常是 C: Program Files (x86) Git bin

  2. 打开 CMD,转到 C: Users Me

  3. 生成 SSH 密钥 ssh-keygen -t rsa

    输入要在其中保存密钥的文件(//. ssh/id _ rsa) : . ssh/id _ rsa (将默认的不正确路径更改为. ssh/some goodname _ rsa)

  4. 将密钥添加到 Heroku heroku keys:add

    从列表中选择创建的键

  5. 进入你的应用程序目录,写一些漂亮的代码

  6. 启动一个 git 回购

  7. 创建 Heroku 应用程序 heroku create

  8. 部署你的应用程序 git push heroku master

  9. 打开你的应用程序 heroku open

我也有同样的问题。就像大家说的那样,我试着重新设置我的钥匙,但还是没有用。因为我重新命名了这个应用。

因此,我所做的就是重置我的键,并从控制台重命名应用程序。检查这个问题以获得更多信息: Heroku 推送应用程序问题

我用这种方法来解决这个问题 也许你可以试试

“启用 ssh-agent”

  1. 下载 git

Http://git-scm.com/

  1. 安装它

  2. 启用 ssh-agent

C: Program Files Git cmd 程序文件 Git cmd

启动-ssh-agent

启用代理后的消息消除器 希望这个能帮到你

您需要通过键入以下内容来创建一个新的 ssh 键 - ssh-keygen-t rsa

然后你需要加上: - heroku 键: 添加

然后,如果你打字 打开

问题已经解决了。

反正对我有用,你可以试试..。

因此,简单的解决方案,转到 c:/Users/user _ name/。Ssh/并删除所有发布/私有密钥对,这样 heroku 将为您生成密钥。

我在 linux ubuntu 上遇到过同样的情况,刚刚修复了它,看起来操作系统把/root/和/root/搞混了。Ssh/和 home/user/。Ssh/dir,我所做的是:

  1. 删除根目录和 home/user. Shh 目录中的所有键。
  2. 生成一个新的密钥 确保注意创建路径(/home/you/. ssh/id _ rsa)或(/root/. ssh/id _ rsa)
  3. 检查黑罗库键 heroku keys
  4. 如果钥匙在那里清除 heroku keys:clear
  5. 现在在这里如果 heroku 找不到一个密钥并且要求生成一个这意味着你和我有相同的问题像这样执行添加命令 heroku keys:add /root/.ssh/id_rsa.pub你要添加的路径将是你在步骤2中得到的路径。
  6. 现在试试 git push heroku master

我有一个类似的 heroku ssh 错误,我无法解决。

作为解决方案,我使用了新的 heroku http-git 特性(http 传输“ heroku”remote 而不是 ssh)。详情请浏览: https://devcenter.heroku.com/articles/http-git

(简短版本: 如果您有一个已经按照标准方式设置的项目,那么运行 heroku git: remote —— http-init 将“ heroku”remote 更改为 http。)

如果您没有时间修复/故障排除 ssh 问题,这是一个很好的快速解决方案。

我得到了同样的错误,因为我有4个 ssh-key,所以我尝试了 follow:

ssh-keygen -t rsa
heroku keys:add

然后,四个选项显示:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

我选择了最新的一款

然后,我修复错误。

我想添加另一个解决方案,因为我在这里没有看到它。我的问题是 heroku 链接到了错误的 url (因为我一直在使用 url 名称)。编辑远程网址解决了我的问题:

git remote set-url heroku <heroku-url-here>