我正在编写一个在Heroku上托管的应用程序,它在私有GitHub托管存储库上执行读/写操作。
我做了以下
当尝试在GitHub托管的存储库(我有完全访问权限)上执行任何git操作时,我得到"主机密钥验证失败"
我不确定我做错了什么..就我所知,Heroku应用程序应该能够读取并推送到GitHub上的回购。
如果我在本地运行相同的脚本,一切都像魅力一样。
希望有人可以帮助我。
答案 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密钥):