Невозможно отправить 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", что указывает на доступный для записи каталог для группы или другого).