2014-09-04 7 views
2

Я пишу приложение, размещенное на Heroku, которое выполняет операции чтения/записи в частных хранилищах, размещенных в GitHub.Heroku -> GitHub SSH ключевой вопрос

Я сделал следующее

  • Сгенерированный ключ SSH, используя ту же электронную почту, как мой счет GitHub
  • Добавлен открытый ключ SSH на мой счет GitHub, который имеет права администратора в хранилище
  • Добавлен открытый ключ SSH для Heroku с использованием heroku: keys add

При попытке выполнить любую операцию git в размещенном в GitHub репозитории (с которым у меня есть полный доступ), я получаю «Ho s проверка ключа не выполнена »

Я не уверен, что я делаю не так. Насколько я могу судить, приложение Heroku должно быть в состоянии читать и нажимать на репо на GitHub просто отлично.

Если я запускаю один и тот же сценарий локально, все работает как шарм.

Надеясь, что кто-то может мне помочь.

ответ

2

Выслушав назад от поддержки Heroku, они что-то вроде того, что сказал VonC. Ключ не был доступен в Heroku, так что он терпел неудачу.

Хотя я думаю, что VonC сказал, я решил использовать токен OAuth для своих операций git вместо того, чтобы делиться секретными и открытыми ключами.

В соответствии с этой статьей вы можете использовать токен GitHub OAuth вместо имени пользователя, и все работает нормально. Установка его как конфигурации Heroku config также означает, что он никогда не должен появляться в вашем коде. https://help.github.com/articles/git-automation-with-oauth-tokens

+0

Согласен. +1. Я упоминал config var, потому что это хороший способ получить доступ к частным ресурсам (например, к приватному ssh-ключу), не добавляя указанный ключ в git repo (более безопасный таким образом). – VonC

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

Смежные вопросы