Heroku - > GitHub SSH密钥问题

时间:2014-09-04 05:53:37

标签: heroku github ssh coffeescript

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

我做了以下

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

当尝试在GitHub托管的存储库(我有完全访问权限)上执行任何git操作时,我得到"主机密钥验证失败"

我不确定我做错了什么..就我所知,Heroku应用程序应该能够读取并推送到GitHub上的回购。

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

希望有人可以帮助我。

2 个答案:

答案 0 :(得分:2)

在听到Heroku的支持后,他们提到了VonC所说的内容。 Heroku中没有密钥,所以它失败了。

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

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

答案 1 :(得分:1)

  

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

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

这意味着:如果Heroku需要直接访问GitHub,它还需要公共私有ssh密钥。

您需要(作为in this article)将您的私钥作为配置文件

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

确保在加载密钥时传递config var。

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

您的Heroku应用程序可以在联系GitHub时使用该私钥。

请注意,共享私钥是不受欢迎的,因此最好生成专用于Heroku访问GitHub的新公钥/私钥(并将新公钥添加到GitHub仓库)。

您将在以下位置找到类似的方法(对于Heroku应用程序来访问私有ssh密钥):