git push heroku master权限被拒绝

时间:2013-01-15 16:46:51

标签: ruby-on-rails git heroku

我正在关注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 app“/ Users / lexi87 / rails_projects / first_app”中。任何解决方案?

6 个答案:

答案 0 :(得分:67)

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

如果您收到此错误,则说您做错了。查看此网站:https://devcenter.heroku.com/articles/keys

如果您发现此错误,最好的方法是删除不必要的密钥,只使用一个。

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

heroku keys:add

答案 1 :(得分: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的。

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

答案 2 :(得分:8)

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

ssh-keygen -t rsa

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

heroku keys:add

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

heroku create
git push heroku master

答案 3 :(得分:4)

ssh-keygen -t rsa

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

heroku keys:add

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

ssh-add ~/.ssh/name_of_your_rsa

并确认您的ssh已添加

ssh-add -l

这可以让你访问Heroku的远程仓库。

答案 4 :(得分: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检查:帮助 - > SSH密钥)。

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

现在推动按预期工作:

git push heroku master

答案 5 :(得分:0)

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

如果您只想重置ssh密钥:

  1. 删除用户的.ssh dir
  2. open git-bash
  3. ssh-keygen -t rsa
  4. heroku键:添加
  5. 然后你就可以git push。