尽管存在有效的SSH密钥,但无法将git repo推送到Heroku
有许多堆栈文章引用了与我得到的相同的错误消息 我在另一台电脑上检查了整个heroku安装文件,一切都很顺利。我不知道为什么这个坏了,但我需要它 当我跑步时:尽管存在有效的SSH密钥,但无法将git repo推送到Heroku,git,heroku,Git,Heroku,有许多堆栈文章引用了与我得到的相同的错误消息 我在另一台电脑上检查了整个heroku安装文件,一切都很顺利。我不知道为什么这个坏了,但我需要它 当我跑步时: > git push -v heroku master Pushing to git@heroku.com:lit-tor-7969.git Permission denied (publickey). fatal: The remote end hung up unexpectedly 堆栈上的所有解决方案都涉及重置ssh密钥,
> git push -v heroku master
Pushing to git@heroku.com:lit-tor-7969.git
Permission denied (publickey).
fatal: The remote end hung up unexpectedly
堆栈上的所有解决方案都涉及重置ssh密钥,我相信ssh密钥是好的。我使用Mac OSX,并已运行:
heroku keys:clear
heroku keys:add
因此,在我看来,git使用的是/Users/bishopz/.ssh密钥,而不是我在repository文件夹中手动生成的密钥
除了下面的答案外,本文似乎还提供了很多见解:
我试图完全删除.ssh目录。我跑
heroku keys:clear
ssh-add -D #to remove all ssh identities
ssh-keygen -t rsa -C "email@gmail.com" -f ~/.ssh/id_rsa_heroku
ssh-add ~/.ssh/id_rsa_heroku
heroku keys:add ~/.ssh/id_rsa_heroku.pub
git push heroku master
现在,您可以:
! Your key with fingerprint 27:5f:64:4e:2e:f0:41:5b:62:a9:95:d2:02:df:27:85 is not authorized to access lit-tor-7969.
fatal: The remote end hung up unexpectedly
对
ssh -vvv git@heroku.com
现在是:
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /Users/bishopz/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Offering RSA public key: /Users/bishopz/.ssh/id_rsa_heroku
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to heroku.com ([50.19.85.132]:22).
感谢您的帮助,如果有人能发布适合我的答案,我将开始新的悬赏。取决于您的设置。
您的~/.ssh/目录中可能有一个配置文件,用于设置在推送到heruko时要用作公钥的文件
示例(~/.ssh/config
):
如果是这种情况,那么更改~/.ssh/config文件中的设置
干杯
.ssh
目录和存储库目录上的权限都是555
ssh连接的关键是:
/home/user/.ssh
/home/user
/home
.ssh
及其所有父目录的组和其他属性权限必须不可写
555
对于.ssh很好,不过。检查它的父目录:755或555,一直到
/
(没有“2”、“3”或“6”,表示组或其他的可写目录)。这个问题实际上与git无关,而与ssh有关。:)
Heroku使用git,git使用ssh,ssh只允许通过公钥进行身份验证。
(但我认为这已经很清楚了。)
heroku密钥:添加
会将公钥发送给heroku。除非指定显式密钥,否则它将使用~/.ssh/id\urd]sa.pub
要成功进行身份验证,您需要提供匹配的私钥。除非另有规定,否则ssh将使用~/.ssh/id\rd]sa
,但如果权限过于宽松,它将拒绝读取它。(有关详细信息,请参见manssh
部分文件。)
检查权限是否正常的简单方法是将密钥添加到代理:
ssh add~/.ssh/id_rd]sa
这应该向代理添加密钥(用ssh add-L
验证),或者抱怨权限错误。(如果一开始没有代理运行,可以使用“ssh-agent-bash”启动一个代理。)
将密钥添加到代理后,代理将负责身份验证,并且您的git应该能够连接而不会出现问题。:) 好的,我解决了。其中有几个答案很有帮助。似乎发生了两件事 首先,基于ssh的密钥已经变得混乱。这是通过删除.ssh目录解决的(当然,这会删除使用.ssh的其他内容的所有凭据,但这些凭据可以稍后重新创建): 其次,根据对应用程序名称的回答,在对ssh密钥进行故障排除的过程中,应用程序名称发生了某种变化。必须在/repository\u folder/.git/config中手动编辑应用程序名称 为了获得正确的应用程序名称,我在web上登录了heroku.com,然后更新了配置文件: 是的
[remote "heroku"]
url = git@heroku.com:my_new_app_name.git
fetch = +refs/heads/*:refs/remotes/heroku/*
感谢所有张贴的建议!我很高兴终于在我的道路上一个新的应用程序
--更新--
每次重新启动计算机时,我都必须重新运行此命令。我可以将其添加到我的.profile或其他内容中,但我认为值得一提。您确定要将密钥添加到正确的帐户吗?也许你登录到了错误的Heroku帐户。也许可以尝试登录heroku。您对ssh目录(和父目录)和文件有正确的保护吗?例如,请参阅。@BishopZ:git push-v heroku master的输出是否可以发布
git config-l
?我在~/.ssh目录中添加了配置文件。找到IP地址,密钥应该是id_rsa还是id_rsa.pub?我两个都试过了,但两个都不起作用。谢谢你的评论。在我的例子中,所有权限都设置正确。ssh-add ~/.ssh/id_urd[rd]sa是为我做的
heroku keys:clear
ssh-add -D #to remove all ssh identities
ssh-keygen -t rsa -C "email@gmail.com" -f ~/.ssh/id_rsa_heroku
ssh-add ~/.ssh/id_rsa_heroku
heroku keys:add ~/.ssh/id_rsa_heroku.pub
[remote "heroku"]
url = git@heroku.com:my_new_app_name.git
fetch = +refs/heads/*:refs/remotes/heroku/*