【问题标题】:Keys not lining up for Heroku?没有为 Heroku 排队的键?
【发布时间】:2013-08-08 05:19:01
【问题描述】:

所以我遇到了你尝试推送到 Heroku 的问题,它说 Permission denied (publickey). fatal: Could not read from remote repository. 所以我找到了 this question(它更详细地描述了它)并通过了整个答案并设法解决了我的问题。我建议其他阅读本文的人阅读下一段以了解我的特定问题,然后在继续之前尝试上述链接中的解决方案。

但我还没有完全准备好。事情就是这样。虽然我不使用它,但我已经安装了 GitHub GUI,如果我在 GUI 资源管理器中右键单击本地存储库并选择“在此处打开 shell”,无论该 shell 的上下文/环境是什么,我都可以推送到 Heroku从那里没有问题。

但是,如果我只是打开好的 ol' 命令行并导航到应用程序文件夹并尝试相同的操作,我会得到整个 Permission Denied your public keys 很烂的事情。

终端配置有什么不同??

编辑:

似乎上面的命令失败了,因为 ssh 由于某种原因不能正常工作。当我运行ssh-add -l 时,我得到Could not connect to authentication agent,这是另一个带有许多建议解决方案的常见错误。我发现的唯一一个(超过 10 个)可以运行的是 bash(我们在 Windows 命令提示符下,请注意),然后是 eval "$(ssh-agent)",上面写着 Agent pid 48532,不管这意味着什么,然后ssh-add -lThe agent has no identities,无论那个是什么意思,这就是我要研究的内容。兔子洞越来越深......

另外,如果我随后退出 bash,ssh-add -l 会直接返回到 Could not connect to authentication agent。 :( 我希望它在我的正常命令提示符下工作!!

【问题讨论】:

  • 您有超过 1 个公钥吗?我知道 GitHub for Windows 会自动生成一个名为 github_rsa.pub 或类似名称的东西,但默认情况下,ssh 密钥生成会创建一个名为 id_rsa.pub 的密钥。如果您有多个,您将哪一个添加到heroku?默认情况下,ssh 工具将使用id_rsa.pub,除非您明确传递不同公钥的路径。
  • 在学习创建、存储和排列 SSH 密钥的艰巨过程中,我将所有内容简化为一个通用密钥。
  • 请说明您使用的是哪种 shell,以及您的主目录的位置,以及您的私钥是否使用密码加密。
  • 您可能在 ~/.ssh/config 或 /etc/ssh/config 中为 github 定义了一个键。请参阅我对stackoverflow.com/questions/18101701/…的回复
  • 我正在使用 Windows 命令提示符,它不允许我推送到 heroku,除非我从 GitHub for Windows 资源管理器启动它,在这种情况下它可以。我无法弄清楚我从 Windows 资源管理器打开的终端和我从 GitHub 资源管理器打开的终端之间有什么区别。主目录是C盘,我不相信私钥是加密的。

标签: git heroku windows-7 github ssh


【解决方案1】:

您需要在两个命令行环境中检查%HOME% 是什么。

在“good ol' command line”中,你可以输入:

set HOME

这将显示它的值。

但是如果没有定义,那么你的错误信息是正常的。

类型:

set HOME=%USERPROFILE%

并检查%PATH%(以便在两种环境中使用相同的命令)。

【讨论】:

  • %HOME% 的值是相同的,但是 %PATH% 的值却完全不同......这让我很困惑。 %PATH% 从来都不是我能很好掌握的东西。看起来有……一点点?……两个不同的 %PATHS% 之间有重叠。我怎么知道我需要什么才能完成这项工作?我不想无意中毁掉“gool ol”%PATH%。
  • @Aerovistae 只需将 PATH 设置为与正在工作的 shell 相同的 PATH:set PATH=...,然后看看是否有任何改变。
  • 尽管我随后将一个 PATH 中缺少的所有内容都添加到另一个 PATH 中,但我仍然收到 Permission denied 消息。
  • @Aerovistae 在经典 shell(不是 Windows 的 GitHub)中,git 工作吗? git --version 是否被识别?总之,你有没有安装msysgit?
  • @Aerovistae 关于您的最后一条错误消息,这意味着 ssh-agent 未运行:stackoverflow.com/q/3454774/6309stackoverflow.com/a/10077302/6309。还有stackoverflow.com/a/16569895/6309
【解决方案2】:

免责声明:我几乎不知道我在说什么。

所以我发现我收到了Permission denied (publickey) fatal: Could not read from remote repository 消息,因为ssh-agent 工作不正常。当我尝试做ssh-add -l 时,它会说Could not connect to authentication agent。一旦我进入 bash 并执行 eval "($ssh-agent)",然后执行 ssh-add -l,它会显示为 The agent has no identities,这听起来像是一部很棒的间谍电影,但实际上只是我完成工作的一个恼人的障碍。

我真的对其中任何一个的作用或含义只有一个模糊的概念,但这就是我修复它的方法。请记住,这一切都是在标准的 Windows 7 命令提示符下完成的。假设您已经不在 bash 中--

cd path-to-Git/bin (for example, cd C:\Program Files\Git\bin)
bash
exec ssh-agent bash
ssh-add "path/to/.ssh/id_rsa"

确保该路径通向 THE PRIVATE KEY。路径必须用引号括起来。不要在末尾添加“.pub”。您会知道它有效,因为它会向您提供有关正在创建身份或类似内容的消息。

唯一仍然让我感到困惑的事情是想知道我是如何安装 bash 的……也许它是 git 附带的?还是 GitHub?还是导轨?还是Heroku??真的不知道它是从哪里来的……以前肯定不存在,我不认为 Windows 7 会出现这种情况……

无论如何,在我做完这一切之后,git push heroku master 在所有 shell 中为我工作,在 bash 内外,即使在关闭和重新打开之后也是如此。无论我做什么,它都是永久有效的!现在很开心。

【讨论】:

  • 顺便说一句——整个解决方案只是为了让它在特定的终端中工作。如果您在所有 shell 实例中普遍遇到该问题,则需要首先运行其他解决方案,如链接中所示我的原始问题 - 您可能正在处理与我不同的问题。
  • 原来你的私钥被加密了?您可以通过在编辑器中打开密钥来检查,它应该以明文形式告诉您它是否已加密。
  • 呃,我不这么认为,我不必为它输入密码...不知何故 ssh 设置不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2016-04-26
  • 2021-02-16
  • 1970-01-01
相关资源
最近更新 更多