我正在关注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”中。任何解决方案?
答案 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'失败。采取以下步骤后,它工作正常。
如果不存在,请在“用户”文件夹下创建.ssh文件夹。如果 它确实删除了它中的所有文件(假设您可以使用ssh键从头开始)。
在Windows资源管理器中,右键单击 .ssh文件夹,从上下文菜单中选择Git bash。它与Github Windows客户端软件一起安装。
在bash窗口中输入
ssh-keygen -t rsa -C "yourname@email.com
"出现提示时输入
密码(不要丢失)。
关闭bash shell窗口。
从项目根目录中的cmd提示符处输入heroku keys:add
。
这将找到并将您刚创建的密钥从/.ssh文件上传到
Heroku的。
现在您可以输入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)。我用
添加了密钥到herokuheroku 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密钥:
然后你就可以git push。