2014-09-04 144 views
2

我寫託管在Heroku上的應用程序,它在私人GitHub上執行讀/寫操作託管庫。的Heroku - > GitHub的SSH密鑰問題

我做了以下

  • 生成的SSH密鑰,使用相同的電子郵件作爲我的GitHub帳戶
  • 添加了SSH公鑰來我的GitHub上的帳戶具有管理員權限到庫
  • 添加SSH公鑰到Heroku使用heroku:keys add

當試圖對GitHub託管的存儲庫(我可以訪問)執行任何git操作時,我得到「Ho st密鑰驗證失敗「

我不確定我在做什麼錯誤..據我所知,Heroku應用程序應該能夠閱讀並推送到GitHub上的回購就好了。

如果我在本地運行相同的腳本,一切工作就像一個魅力。

希望有人能幫助我。

回答

2

聽取Heroku的背部支撐後,根據VonC所說的話提到了一些事情。關鍵在Heroku中沒有,所以它失敗了。

雖然VonC表示會工作我想,我決定爲我的git操作使用OAuth令牌,而不是共享私鑰和公鑰。

根據本文,您可以使用GitHub OAuth令牌代替用戶名,並且所有工作都正常。將其設置爲Heroku config var也意味着它永遠不必出現在您的代碼中。 https://help.github.com/articles/git-automation-with-oauth-tokens

+0

我同意。 +1。我提到了config var,因爲它是訪問私有資源(如私有ssh密鑰)的好方法,而不必將所述密鑰放入git repo(更安全)。 – VonC 2014-09-04 12:20:21

1

如果我在本地運行相同的腳本,一切工作就像一個魅力。

這是因爲在您的$ HOME/.ssh中,您同時擁有私鑰和公鑰。
您需要同時訪問回購託管服務器(如GitHub或Heroku)。

這意味着:如果Heroku需要直接訪問GitHub,它還需要公共的專用ssh密鑰。

您需要(如in this article)來引用您的私鑰配置瓦爾

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

確保您通過配置無功時加載的關鍵。

鍵= OpenSSL的:: PKEY :: RSA.new ENV [ 「PRIVATE_KEY」], 'notasecret'

和你的Heroku應用程序將可以聯繫GitHub的時候使用私鑰。

請注意,共享私鑰是不被接受的,所以爲heroku創建專用於訪問GitHub的新公鑰/私鑰(並將新公鑰添加到GitHub回購)是更可取的。

你會發現類似的方法(對於Heroku的應用程序來訪問SSH私鑰)中:

+0

歡呼花時間寫這個!如上所述,儘管我決定使用OAuth令牌而不是SSH密鑰。 – lukerollans 2014-09-04 12:19:14