54

我正在关注 ruby​​.railstutorial。我运行命令“git push heroku master”,它吐出这个错误。

Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我在我的 Rails 应用程序“/Users/lexi87/rails_projects/first_app”中。有什么解决办法吗?

4

7 回答 7

71

避免此类错误的最佳方法是使用一对公钥/私钥,而不是 Heroku 的额外密钥。这样您(或您的系统)就不会选择错误的密钥来登录 heroku。

如果您收到此错误,则说明您做错了什么。检查这个网站:https ://devcenter.heroku.com/articles/keys

如果您遇到此错误,最好的方法是删除不必要的密钥并仅使用一个。

如果您的系统上需要多个密钥对,您可以为 heroku 设置一个密钥。这是通过以下命令完成的:

heroku keys:add
于 2013-01-15T18:06:44.233 回答
13

对安装了 Github Windows 客户端的 Windows 7 用户的一些帮助:

即使 heroku toolbelt 报告它找到了我的 git_hub 公钥并上传了它,“git push heroku master”还是失败了。采取以下步骤后,它工作正常。

  1. 如果不存在,请在您的用户文件夹下创建 .ssh 文件夹。如果是这样,请删除其中的所有文件(这假设您可以使用 ssh 密钥从头开始)。

  2. 在 Windows 资源管理器中,右键单击 .ssh 文件夹,然后从上下文菜单中选择 Git bash。它与 Github Windows 客户端软件一起安装。

  3. 在 bash 窗口中输入 ssh-keygen -t rsa -C "yourname@email.com“ 提示时输入密码(不要丢失)。

  4. 关闭 bash shell 窗口。

  5. 从项目根目录中的 cmd 提示符中,输入heroku keys:add. 这将找到您刚刚从 /.ssh 文件创建的密钥并将其上传到 Heroku。

现在您可以输入git push heroku master将您的应用程序推送到 Heroku。注意:完成后,您需要将新生成的 ssh 公钥添加到您的 Github 帐户。

于 2014-03-24T11:47:59.137 回答
8

我遇到了同样的问题。在我的 .ssh 文件夹中,我有一个名为“已知主机”的文件。我一直在尝试删除并创建新的 ssh 密钥,但它不起作用。最后,我删除了 .ssh 中的所有内容,包括“已知主机”,然后使用以下命令创建了一个新的 rsa 密钥:

ssh-keygen -t rsa

然后我使用以下方法将这个新密钥添加到heroku:

heroku keys:add

然后创建一个新的heroku repo并将我的应用程序推送到它:

heroku create
git push heroku master
于 2013-11-02T21:23:45.467 回答
4
ssh-keygen -t rsa

以上是可选的,因为您还可以链接到现有密钥。Heroku 将提示在下一步中选择密钥。

heroku keys:add

添加新创建的密钥或现有密钥。如果您仍然遇到问题,您很可能需要通过执行以下操作将密钥添加到计算机的 ssh 密钥列表中:

ssh-add ~/.ssh/name_of_your_rsa

并确认您的 ssh 已添加

ssh-add -l

这应该可以让您访问推送到 Heroku 的远程仓库。

于 2014-05-08T02:23:42.113 回答
2

在 OSX 上,我遇到了同样的问题,我得到了

no such identity: /Users/me/.ssh/yourPrivateKey: No such file or directory
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我尝试使用 ssh-keygen -t rsa 创建一个新密钥,然后使用 heroku keys:add 添加它,但它没有帮助。

然后我在~/.ssh/中找到了一个名为config的文件,里面有:

ServerAliveInterval 300
ServerAliveCountMax 3

host heroku.com
    user git
    hostname heroku.com
    identityfile ~/.ssh/yourPrivateKey

因此,我将yourPrivateKey更改为我的私钥文件名(默认为id_rsa)aa 并且它起作用了:)

于 2014-09-01T20:19:37.343 回答
0

我用

ssh-keygen -t rsa

并使用了与 id_rsa 不同的文件名(在我的例子中是 heroku)。我添加了heroku的密钥

heroku keys:add

在尝试将我的主分支推送到 heroku 时,我总是收到以下错误:

$ git push heroku master 无法确定
主机“heroku.com (50.19.85.132)”的真实性。
RSA 密钥指纹为
8b:48:5e:67:0e:c9:16:47:32:99:87:0c:1f:c8:60:bb。您确定要
继续连接(是/否)?是 警告:将
'heroku.com,50.19.85.132' (RSA) 永久添加到已知主机列表中。权限
被拒绝(公钥)。致命:无法从远程存储库中读取。

请确保您具有正确的访问权限并且存储库存在。

正如我注意到的,git 只使用了来自另一个 ssh-access 的我的 id_rsa 密钥(你可以通过你的 git gui:Help -> SSH keys 来检查)。

我将 .ssh 目录C:\Users\%username%.ssh重命名为.ssh.bak并将我的heroku私钥和公钥(从.ssh.bak目录)复制到新创建的.ssh目录并将其命名为 id_rsa (和 id_rsa.pub)。

现在推送按预期工作:

git push heroku master
于 2014-03-23T15:57:59.627 回答
0

如果您在 Windows 上工作,请务必使用git-bash而不是 Powershell/命令提示符。

如果您只想重置 ssh 密钥:

  1. 删除用户的 .ssh 目录
  2. 打开 git bash
  3. ssh-keygen -t rsa
  4. heroku 键:添加

然后你就可以 git push 了。

于 2014-10-13T09:31:27.040 回答