Невозможно отправить git-репо в Heroku, несмотря на действительные ключи SSH

Есть много статей стека, цитирующих то же самое сообщение об ошибке, которое я получаю.

Я прошел всю настройку документации по герою на другом компьютере, и все работало отлично. Не уверен, почему этот не работает, но мне это нужно.

Когда я бегу:

> git push -v heroku master

Pushing to git@heroku.com:lit-tor-7969.git
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Все решения в стеке включают сброс ключей ssh, и я считаю, что ключи ssh в порядке. Я на Mac OSX и запустил:

heroku keys:clear
heroku keys:add

Поэтому мне кажется, что Git использует ключи /Users/bishopz/.ssh, а не ключи, которые я сгенерировал вручную в папке репозитория.

В дополнение к ответам ниже, эта статья, кажется, дает много понимания: не удается нажать на Heroku, потому что отпечаток ключа

Я попытался полностью удалить каталог.ssh. Я побежал

heroku keys:clear
ssh-add -D #to remove all ssh identities
ssh-keygen -t rsa -C "email@gmail.com" -f  ~/.ssh/id_rsa_heroku
ssh-add ~/.ssh/id_rsa_heroku
heroku keys:add ~/.ssh/id_rsa_heroku.pub
git push heroku master

а теперь получите:

!  Your key with fingerprint 27:5f:64:4e:2e:f0:41:5b:62:a9:95:d2:02:df:27:85 is not authorized to access lit-tor-7969.
fatal: The remote end hung up unexpectedly

Ответ на

ssh -vvv git@heroku.com

сейчас:

debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /Users/bishopz/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: Offering RSA public key: /Users/bishopz/.ssh/id_rsa_heroku
debug1: Server accepts key: pkalg ssh-rsa blen 279
debug1: Authentication succeeded (publickey).
Authenticated to heroku.com ([50.19.85.132]:22).

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

4 ответа

Решение

Хорошо, я смог решить это. Некоторые из этих ответов были полезны. Кажется, что произошли две вещи.

Во-первых, основываясь на этой статье, ssh-ключи запутались. Это было решено путем удаления каталога.ssh (конечно, это удалило все учетные данные для других вещей, которые используют.ssh, но они могут быть воссозданы позже):

heroku keys:clear
ssh-add -D #to remove all ssh identities
ssh-keygen -t rsa -C "email@gmail.com" -f  ~/.ssh/id_rsa_heroku
ssh-add ~/.ssh/id_rsa_heroku
heroku keys:add ~/.ssh/id_rsa_heroku.pub    

Во-вторых, основываясь на ответе на эту статью, имя приложения каким-то образом изменилось в процессе устранения неполадок с ключами SSH. Имя приложения нужно было отредактировать вручную в /repository_folder/.git/config

Чтобы получить правильное имя приложения, я зашел на сайт heroku.com в Интернете, а затем обновил файл конфигурации:

это содержит

[remote "heroku"]
    url = git@heroku.com:my_new_app_name.git
    fetch = +refs/heads/*:refs/remotes/heroku/*

Спасибо всем, что размещены предложения! Я так рад, что наконец-то на пути к новому приложению!

--ОБНОВИТЬ--

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

Этот вопрос на самом деле не о git, а о ssh.:)

Heroku использует git, который использует ssh, который позволяет только аутентификацию по публичному ключу. (Но я думаю, что это уже ясно.)

heroku keys:add вышлю открытый ключ к героку. Если вы не укажете явный ключ, он будет использовать ~/.ssh/id_[rd]sa.pub,

Для успешной аутентификации вам необходимо предоставить соответствующий закрытый ключ. Если не указано иное, ssh будет использовать ~/.ssh/id_[rd]sa, но он откажется читать, если разрешения слишком свободны. (Увидеть man ssh раздел ФАЙЛЫ для деталей.)

Простой способ проверить правильность разрешений - добавить ключ к агенту:ssh-add ~/.ssh/id_[rd]sa

Это должно либо добавить ключ к агенту (проверьте с помощью ssh-add -L) или пожаловаться на неправильные разрешения. (Если на первом месте не запущен ни один агент, вы можете запустить его с помощью 'ssh-agent bash'.)

После добавления ключа к агенту агент позаботится об аутентификации, и ваш git сможет без проблем подключиться.:)

В зависимости от вашей настройки. у вас может быть файл конфигурации в вашем каталоге ~/.ssh/, который задает, какой файл будет использоваться в качестве открытого ключа, который будет использоваться при нажатии на heruko.

пример (~/.ssh/config):

Host 127.0.0.1 #Use Heroku's IP
IdentityFile ~/.ssh/use_this_key

Так что если это так, то измените настройки в файле ~/.ssh/config

ура

Разрешения на обоих .ssh каталог и каталог репозитория 555

Для соединений ssh ​​учитываются группа и другие разрешения:

  • /home/user/.ssh
  • /home/user
  • /home

(замените /home/user на фактический путь вашего домашнего каталога)

Идея состоит в том, что группа и другие атрибуты разрешения для .ssh и все его родительские каталоги не должны быть доступны для записи.

555 хорошо для.ssh, хотя рекомендуется 700.
Проверьте родительские каталоги: 755 или 555 вплоть до / (нет "2", "3" или "6", что указывает на доступный для записи каталог для группы или другого).

Другие вопросы по тегам