Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尽管存在有效的SSH密钥,但无法将git repo推送到Heroku_Git_Heroku - Fatal编程技术网

尽管存在有效的SSH密钥,但无法将git repo推送到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密钥,

有许多堆栈文章引用了与我得到的相同的错误消息

我在另一台电脑上检查了整个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密钥,我相信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
(用主目录的实际路径替换/home/user)

其思想是,
.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/*