Git push heroku master Разрешение отклонено (publickey). фатальный: удаленный конец неожиданно повесил трубку

Пожалуйста, извините немного разочарования, которое я постараюсь держать под контролем, поскольку Heroku использует SO как свою поддержку для клиентов (что, по-моему, это дрябло, по меньшей мере).

В течение последних пяти часов я пытаюсь опубликовать приложение, но с ключами что-то не так. Я прочитал десятки статей и попробовал наконечник после наконечника, пытаясь понять, где, в глупом, полностью непрозрачном процессе, Heroku напортачивается.

Мой вариант использования не так уж и трудный: я создал новую пару ключей для своих приложений heroku. Я установил этот ключ в качестве ключа:

  > heroku keys
  === [email protected] Keys
  ssh-rsa AAAAB3NzaC...avOqfA7ZBd [email protected]

Я могу войти и "создать" приложение (глупое имя, поскольку оно, похоже, создает репозиторий git, а не какое-либо приложение) без проблем. Но каждое * freaking * время, когда я пытаюсь нажать мое приложение, я получаю:

  > git push heroku master
  Permission denied (publickey).
  fatal: The remote end hung up unexpectedly

Я не понимаю, что происходит с WTF; Я просто застрял, ударяя головой о клавиатуру без каких-либо проблем, но надеюсь, что всемогущий бог Google сможет ответить на него. И Google не отвечает на него (ну, позвольте мне забрать это, я видел около дюжины способов ответить на этот вопрос).

Для системы, которая должна быть простой, это шутка. Мне нравится идея Героку, но после того, как мы взяли пять наших, чтобы ничего не сделать, я думаю, что это неправильный выбор.

Ответ 1

В Интернете существует множество решений. Я попытаюсь сконденсировать доступные варианты в один пост. Повторите попытку после каждого шага.

  • Шаг 1: попытка добавить открытый ключ в Heroku

    heroku keys:add ~/.ssh/id_rsa.pub // or just heroku keys:add and it will prompt you to pick one of your keys
    
  • Шаг 2: Создайте новый набор ключей SSH, затем повторите первый шаг

    https://help.github.com/articles/generating-ssh-keys

  • Шаг 3: Проверьте и/или измените конфигурационный файл

    vim ~/.ssh/config
    
    Host heroku.com
    Hostname heroku.com 
    Port 22 
    IdentitiesOnly yes 
    IdentityFile ~/.ssh/id_rsa    <--- Should be your public SSH key
    TCPKeepAlive yes 
    User [email protected]
    
  • Шаг 4: Удалите удаленный герой от git, воссоздайте соединение, добавив удаленный файл с помощью создания героя, будет только вариантом для новых репозиториев. Обязательно удалите старое репо, которое вы пытались создать

     $ git remote rm heroku
     $ heroku create
    
  • Шаг 5: Переустановите набор инструментов Heroku

Ответ 2

Ключи вашего героя и github не синхронизированы.

  • Определите, какой ключ вы хотите использовать (рекомендуем создать новый, т.е. heroku_rsa).

  • Добавить ключ в github.

  • Добавьте тот же самый ключ к герою, используя: heroku keys:add

Ответ 3

Я столкнулся с той же проблемой, и это моя теория относительно того, что происходит:

Я давно зарегистрировался на Heroku, предоставив им свой публичный ключ github. При попытке обычного git push heroku master он идет и ищет мой закрытый ключ, найденный в ~/.ssh/github_rsa. Затем он терпит неудачу с сообщением, которое вы отправили.

Однако я попробовал позже ssh на другой сервер, используя флаг -i, чтобы указать мой "файл идентификации" (например, закрытый ключ), и он запросил пароль для моего личного ключа. Открыв секретный ключ, команда git push heroku master работает. Некоторые выводы:

  • Пока ssh запросит пароль для файла идентификации, git не будет.
  • Если вы разблокируете файл идентификатора другим методом, например ssh, он останется разблокированным для вашего использования git.
  • Кажется, нет никакой документации о том, как окончательно удалить защиту паролем в файле идентификации, в том числе с общей командой unix keytool.
  • Выше решения о создании новой пары открытых/закрытых ключей кажутся обходным путем для этой проблемы с паролем, не зная, что проблема.

Ответ 5

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

ps -afe | grep ssh-agent

ssh-add ~/.ssh/id_rsa_heroku_github

Мне также пришлось добавить открытый ключ в github (вручную) и heroku

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

Ответ 6

Если ни одно из других решений не работает для вас, убедитесь, что вы вошли в оболочку linux с вашей учетной записью и не с root счет.

Таким образом, если вы работаете с пользователем, который не является владельцем ваших ssh-ключей, git будет искать неправильные ключи для аутентификации