Не удается нажать на Heroku, потому что отпечаток ключа - PullRequest
131 голосов
/ 09 января 2012

Я новичок в Rails, и я пытался развернуть очень простое приложение для Heroku.Это второе приложение, которое я развернул, и первое, с которым я смог справиться.Однако у меня есть некоторые проблемы с этим.Всякий раз, когда я " git push heroku master ", я получаю эту ошибку:

!Ваш ключ с отпечатком пальца xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx не авторизован для доступа к my_heroku_app.

fatal: Дистанционный конец неожиданно зависает

Я попытался управлять своими ключами после входа в Heroku.Если я наберу в своей консоли " heroku keys ", то получу:

Нет ключей для myemailaddress.

Однако, если я запускаюкоманда " ключи героя: добавить " Я получаю

Найден существующий открытый ключ: /Users/michele/.ssh/id_rsa.pub Загрузка открытого ключа ssh / Users / michele /.ssh / id_rsa.pub!Отпечаток пальца уже существует.Пожалуйста, используйте один ключ SSH для каждой учетной записи Heroku

Пожалуйста, помогите мне!Это очень неприятно, я понятия не имею, что случилосьСпасибо

Ответы [ 10 ]

288 голосов
/ 05 февраля 2012

У меня была такая же проблема, я безуспешно следил за этой и другими публикациями: - ((

Наконец-то я нашел решение: мне пришлось добавить мою новую личность rsa в мою машину!

Итак, сначала я создал новый ключ rsa:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

, затем добавил его на мою машину

ssh-add ~/.ssh/id_rsa_heroku

и, наконец, в Heroku

heroku keys:add ~/.ssh/id_rsa_heroku.pub

После этого

git push heroku master

работал как шарм!

Надеюсь, это поможет.

61 голосов
/ 18 августа 2012

У меня тоже есть несколько ключей и несколько учетных записей героку, поэтому я сталкиваюсь с этой проблемой каждые несколько месяцев.Как упоминали Джордано Скальцо, Том Кэрчрэ и пользователь 664833, основной проблемой является ssh-agent, который вы контролируете с помощью команды ssh-add.Страница man (man ssh-add) на самом деле довольно четкая и лаконичная, поэтому проверьте ее.

Вы можете перечислить все ключи, о которых знает ssh-agent:

ssh-add -l

Youможет удалить все ключи, о которых знает ssh-agent:

ssh-add -D

Или удалить определенный ключ с помощью

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Не беспокойтесь!Вы на самом деле не удаляете ключи, а только меняете, какие из них автоматически пытается использовать ssh-agent, например, когда вы пытаетесь нажать на heroku.Ключи легко добавлять и удалять по мере необходимости, поэтому для меня, когда я расстроен этой проблемой, самый простой способ исправить это - удалить все ключи и добавить обратно только тот, который я хочу использовать в данный момент.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it
38 голосов
/ 22 ноября 2012

Ваш компьютер имеет ключ SSH, но этот ключ SSH связан с другой учетной записью Heroku.

Если вам нужно использовать обе учетные записи для разных приложений на одном компьютере, вы должны создать новый ключ SSH на своем компьютере и загрузить его в Heroku:

$ ssh-keygen

Обязательно сохраните егокак '/Users/User/.ssh/new_id_rsa.pub', когда вас спросит приглашение.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Затем вам нужно добавить альтернативный хост для heroku.com к вашему ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

А затем обновите .git/config в своем проекте, чтобы использовать псевдоним хоста:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Выбрав между heroku и heroku-alt в удаленном файле .git/configиз конкретных проектов вы можете управлять, какие проекты используют какие учетные данные.

14 голосов
/ 07 февраля 2013

Вот очень четкое объяснение, которого не хватает в документации Heroku или других ответах на вопрос.По крайней мере, вся информация не появляется ни в одном месте.Это также позволит вам понять проблему так, как это делает инструмент учета.

Heroku идентифицирует вас двумя способами:

Первый находится в .git / config

[heroku]
    account = acccount_name

Это позволяет вам выполнять основные операции, используя heroku

Второй способ, которым героку идентифицирует вас, - это любая операция, использующая ssh (git push).Heroku идентифицирует вас по вашему ключу ssh, как указано здесь: https://devcenter.heroku.com/articles/keys

Эта пара ключей используется для надежной криптографии и уникально идентифицирует вас как разработчика при нажатии на изменения кода.

Таким образом, каждая учетная запись heroku, над которой вы работаете, должна будет отправлять разные ключи heroku при использовании ssh.Следуйте любому руководству для создания ключей SSH.

Ключ заставляет SSH использовать разные ключи для каждой учетной записи Heroku.Как вы это настраиваете?Вам нужно будет сделать 2 вещи:

1) Вам нужно будет создать «фиктивный» домен, который ваш .ssh / config будет перехватывать и перенастраивать.Это сообщит SSH «фактический» домен, который вы хотите, и какой специальный ключ SSH использовать.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) Измените ваш .git / config, чтобы использовать его при использовании git push.Вместо heroku.com, используйте фиктивный домен, который вы установили в .ssh / config

[remote "heroku"]
    url = git@heroku.com.git


[remote "heroku"]
    url = git@heroku.my_unique_key:myapp.git

Вот и все :) Немного сложно и немного просто одновременно.Мне понадобилось 3 года, чтобы биться головой об стену, проб и ошибок, чтобы обнаружить эту информацию.Это должно быть где-то четко задокументировано, но, по крайней мере, это начало.

9 голосов
/ 10 января 2012

Вам нужно будет создать новые ключи и добавить их

указать новое имя файла после запуска

ssh-keygen

тогда (в моем случае)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub
3 голосов
/ 29 августа 2012

В моем случае, heroku keys уже указывал правильный ключ. Итак, все, что мне нужно было сделать, это запустить ssh-add /path/to/that/key, а затем все стало работать нормально.

3 голосов
/ 09 января 2012

У меня та же проблема на прошлой неделе. Это связано помогло мне. Надеюсь, это немного вам поможет. http://devcenter.heroku.com/articles/keys

2 голосов
/ 17 июля 2013

У меня также есть две учетные записи Heorku, и в качестве обходного пути я «пригласил» свою основную учетную запись (ту, чей ключ автоматически используется Heroku) в качестве соавтора для моего проекта.

1 голос
/ 02 апреля 2013

Просто не нужно добавлять решение для пользователей Windows.

  1. Первая загрузка «Генератор ключей Putty»

  2. Создайте ключ с его помощью OBS, вам нужно переместить указатель мыши над пустой областью для генерации случайности.

  3. Сохраните свои ключи, просто запомните, чтобы переименовать ваш ключ в [имя] .pub

  4. Запустите heroku keys:add в терминале!

0 голосов
/ 09 сентября 2013

В моем случае проблема была в версии ssh, которую я использовал. Я просто установил переменную среды GIT_SSH на другую ("GIT_SSH = / usr / bin / ssh"), и у меня все работало нормально.

...