【问题标题】:Heroku -> GitHub SSH key issueHeroku -> GitHub SSH 密钥问题
【发布时间】:2014-10-28 18:29:53
【问题描述】:

我正在编写一个托管在 Heroku 上的应用程序,它在私有 GitHub 托管存储库上执行读/写操作。

我做了以下事情

  • 使用与我的 GitHub 帐户相同的电子邮件生成 SSH 密钥
  • 将 SSH 公钥添加到我的 GitHub 帐户,该帐户对存储库具有管理员权限
  • 使用 heroku:keys add 将 SSH 公钥添加到 Heroku

尝试在 GitHub 托管存储库(我完全可以访问)上执行任何 git 操作时,我得到“主机密钥验证失败”

我不确定我做错了什么。据我所知,Heroku 应用程序应该能够读取并推送到 GitHub 上的存储库就好了。

如果我在本地运行相同的脚本,一切都会像魅力一样运行。

希望有人能帮帮我。

【问题讨论】:

    标签: heroku github ssh coffeescript


    【解决方案1】:

    如果我在本地运行相同的脚本,一切都会像魅力一样运行。

    这是因为在本地,在您的 $HOME/.ssh 中,您同时拥有私钥和公钥。
    您需要同时访问一个 repo 托管服务器(如 GitHub 或 Heroku)。

    也就是说:如果Heroku需要直接访问GitHub,还需要公钥私钥。

    您需要(作为in this article)将您的私钥引用为配置变量

    heroku config:add PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----
      MMMMMMMMaaaaaammmmammamamammamaasdhkghkdahgj8234joihsdfJHHKJGHGG
      ...
      -----END RSA PRIVATE KEY-----"
    

    确保在加载密钥时传递配置变量。

    key = OpenSSL::PKey::RSA.new ENV["PRIVATE_KEY"], 'notasecret'

    您的 Heroku 应用在联系 GitHub 时将能够使用该私钥。

    请注意,不赞成共享私钥,因此最好生成一个专用于 Heroku 访问 GitHub 的新公钥/私钥(并将新公钥添加到 GitHub 存储库)。

    您会在以下位置找到类似的方法(让 Heroku 应用访问私有 ssh 密钥):

    【讨论】:

    • 为花时间写这篇文章干杯!不过,如上所述,我决定使用 OAuth 令牌而不是 SSH 密钥。
    【解决方案2】:

    在收到 Heroku 支持的回复后,他们提到了 VonC 所说的内容。密钥在 Heroku 中不可用,因此失败。

    虽然我想 VonC 所说的会起作用,但我决定使用 OAuth 令牌进行我的 git 操作,而不是共享私钥和公钥。

    根据本文,您可以使用 GitHub OAuth 令牌代替用户名,一切正常。将其设置为 Heroku 配置变量也意味着它永远不必出现在您的代码中。 https://help.github.com/articles/git-automation-with-oauth-tokens

    【讨论】:

    • 我同意。 +1。我之所以提到 config var,是因为它是访问私有资源(如私有 ssh 密钥)的好方法,而无需将所述密钥放入 git repo(这样更安全)。
    猜你喜欢
    • 1970-01-01
    • 2016-06-07
    • 2012-06-07
    • 2016-01-19
    • 2018-07-14
    • 1970-01-01
    • 2014-02-19
    • 2020-10-17
    • 2020-05-30
    相关资源
    最近更新 更多