Heroku 'Отказано в доступе (открытый ключ) фатально: не удалось прочитать из удаленного репозитория "горе

Я искал много часов подряд в поисках решения моей, казалось бы, легко решаемой проблемы. Дело не в том, что мой поиск ничего не дал, а в том, что мой поиск нашел так много разных решений, ни одно из которых не сработало.

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

"В доступе отказано (публичный ключ). Неустранимый: Не удалось прочитать из удаленного хранилища. '

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

  • ключи героя: очистить, затем ключи героя: добавить
  • Восстановление ключа ssh самостоятельно с помощью 'ssh-keygen -t rsa'
  • Очистка моего каталога.ssh с последующими ключами heroku: очистить, а затем сгенерировать ключ ssh
  • Удаление моего приложения на герою и воссоздание одного (к счастью, там было не так много)

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

Как временное решение (которое, я надеюсь, не превратится в постоянное), я вошел в свой экземпляр Ubuntu Amazon AWS ec2. Тяга и толкание к Heroku и обратно работает отлично. По этой причине я все еще чувствую, что проблема заключается в ключе ssh на моем Mac. Оба ключа отображаются под моей учетной записью Heroku. Имеет ли значение адрес электронной почты в конце ключа?

РЕДАКТИРОВАТЬ: я могу толкать и тянуть из GitHub нормально (я не использую ssh, однако), так почему бы не Heroku?

На данный момент я готов попробовать что угодно. Спасибо!

14 ответов

Решение

Я просто думал, что поделюсь, что нашел ответ на свой вопрос.

Запись моей проблемы сделала ее еще более понятной, и я продолжил исследовать, где, по моему мнению, лежала моя проблема: ключ ssh

Оказывается, я был прав. Проблема была не в самом ключе, а в том, что я не добавил его в список известных ключей SSH моего локального Mac. Поэтому, несмотря на то, что в моей учетной записи Heroku был загружен правильный ключ, мой Mac не смог аутентифицироваться с ним, потому что не смог найти этот ключ на моем компьютере. Решение?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

Я хотел бы отдать должное https://help.github.com/articles/error-permission-denied-publickey за хорошую ссылку.

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

Распространенная ошибка ключа: Permission denied (publickey), Вы можете исправить это с помощью keys:add уведомить Heroku о вашем новом ключе.

Вкратце выполните следующие действия: https://devcenter.heroku.com/articles/keys

Сначала вы должны создать ключ, если у вас его нет:

ssh-keygen -t rsa

Во-вторых, вы должны добавить ключ к Heroku:

heroku keys:add

У меня была точно такая же ошибка (на Windows 7), и причина была в другом. Я решил это по-другому, поэтому решил добавить причину и решение для других.

Хотя ошибка, казалось, указывала на героку, на самом деле ошибка говорила "Heroku can't get to the git repository", Я поклялся, что у меня были одинаковые ключи на всех серверах, потому что я создал их и загружал их один за другим одновременно.

Потратив почти целый день на это, я понял, что, потому что git показывает только отпечаток пальца, а не фактический ключ. Я не мог проверить, соответствует ли это ключ на моем HD или heroku. Я заглянул в известный файл hosts и угадаю, что... он показывает ключи для каждого сервера, и я смог ясно увидеть, что открытые ключи git и heroku не совпадают.

1) Я удалил все файлы в моей папке с ключами, ключ от github, используя их веб-сайт, и ключ от heroku, используя git bash и команду heroku keys:clear

2) Следуйте инструкциям github, чтобы сгенерировать новую пару ключей и загрузить открытый ключ в git

3) используя git bash-heroku keys:add загрузить тот же ключ к героку.

Сейчас git push heroku master работает.

какой кошмар, надеюсь, это помогло кому-то.

Bryan

Проблема, с которой я столкнулся, заключается в том, что я использовал только https для своей учетной записи GitHub. Мне нужно было убедиться, что моя учетная запись GitHub настроена для доступа по SSH и что оба GitHub и heroku используют одни и те же открытые ключи. Вот шаги, которые я предпринял:

  1. Перейдите в каталог ~/.ssh и удалите id_rsa и id_rsa.pub, если они там есть. Я начал с новых ключей, хотя это может и не понадобиться.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Следуйте инструкциям на gitHub для генерации ключей SSH
  3. Войдите в heroku, создайте новый сайт и добавьте свои открытые ключи:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

У меня был тот же случай на Linux Ubuntu и только что исправил, кажется, что ОС была перепутана между /root/.ssh/ и home / user /.ssh / dir, что я сделал:

  1. удалил все ключи из корневого каталога и каталога home / user.shh.
  2. сгенерированный новый ключ, убедитесь, что вы обратили внимание на путь создания (/home/you/.ssh/id_rsa) или (/root/.ssh/id_rsa)
  3. проверь геройку ключей heroku keys
  4. если ключи там чистые heroku keys:clear
  5. heroku keys:add теперь здесь, если heroku не смог найти ключ и попросил сгенерировать одно право no, а это значит, что у вас та же проблема, что и у меня, выполните команду add следующим образом heroku keys:add /root/.ssh/id_rsa.pub путь, который вы добавите, будет тем, который вы получили на шаге 2.
  6. пытаться git push heroku master сейчас

Мой путь на Windows 8

  1. Добавьте каталог с помощью ssh-keygen в системную переменную PATH, обычно это C:\Program Files (x86)\Git\bin

  2. Откройте CMD, перейдите в C:\Users\Me\

  3. Создать ключ SSH ssh-keygen -t rsa

    Введите файл, в котором нужно сохранить ключ (//.ssh/id_rsa): .ssh/id_rsa (измените неправильный путь по умолчанию на.ssh/somegoodname_rsa)

  4. Добавьте ключ к Heroku heroku keys:add

    Выберите созданный ключ из списка

  5. Перейдите в каталог своего приложения, напишите красивый код

  6. Инициировать репозиторий git initgit add .git commit -m 'chore(release): v0.0.1

  7. Создать приложение Heroku heroku create

  8. Разверните свое приложение git push heroku master

  9. Откройте свое приложение heroku open

Вам нужно создать новый ключ ssh, набрав следующее - ssh-keygen -t rsa

Затем нужно добавить: - ключи героя: добавить

Тогда если наберете - героку откройте

Проблема была решена.

В любом случае, это сработало для меня, вы можете попробовать...

Я получил ту же ошибку, и потому что у меня есть 4 ssh-ключа, поэтому я попытался следовать:

ssh-keygen -t rsa
heroku keys:add

тогда четыре варианта показывают:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

Я выбираю 3), самый новый

Затем я исправляю ошибку.

Была похожая проблема, и много чего перепробовал. В конечном счете, мне помогло установить Gnu на Windows ( https://github.com/bmatzelle/gow/releases) и убедиться, что он использует инструмент ssh внутри этого каталога, а не тот, что с Git. После того, как установлен тест с (убедитесь, что в вашей среде PATH, что он предшествует Git\bin)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

Я использовал замазку и конкурс, как описано здесь: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

После того, как ключи были отправлены в heroku (ключи heroku: добавьте c:\Users\Person.ssh\id_rsa.pub), используйте

ssh -v <username>@heroku.com 

и убедитесь, что ваш стек показывает использование Putty - то есть рабочий стек:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

Тот, который работал ранее и не удался:

C:\Git\htest2>ssh -v <username>@gmail.com@heroku.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Connecting to heroku.com [50.19.85.156] port 22.
debug1: Connection established.
debug1: identity file /c/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version Twisted
debug1: no match: Twisted
debug1: Enabling compatibility mode for protocol 2.0
**debug1: Local version string SSH-2.0-OpenSSH_4.6**
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-cbc hmac-md5 none
debug1: kex: client->server aes128-cbc hmac-md5 none
debug1: sending SSH2_MSG_KEXDH_INIT
debug1: expecting SSH2_MSG_KEXDH_REPLY
debug1: Host 'heroku.com' is known and matches the RSA host key.
debug1: Found key in /c/Users/Person/.ssh/known_hosts:1
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /c/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Я использую этот метод, чтобы решить эту проблему. Может быть, вы можете попробовать это

"Включить ssh-agent"

  1. Скачать Git

http://git-scm.com/

  1. Установить его

  2. Включить ssh-agent

C: \ Program Files \ Git \ cmd

запуск SSH-агент

Диспетчер сообщений после того, как я агент включил Надеюсь, это поможет вам

Я хотел бы добавить другое решение, так как я не видел его здесь. Моя проблема заключалась в том, что heroku связывался с неправильным URL (так как я продолжал играть с именами URL). Редактирование удаленного URL решило мою проблему:

git remote set-url heroku <heroku-url-here>

У меня была похожая ошибка heroku ssh, которую я не смог устранить.

В качестве обходного пути я использовал новую функцию http-git heroku (вместо ssh используется http-транспорт для "heroku"). Подробности здесь: https://devcenter.heroku.com/articles/http-git

(Краткая версия: если у вас уже есть проект, настроенный стандартным способом, запустите heroku git:remote --http-init, чтобы заменить "heroku" на http.)

Хороший быстрый способ обойти, если у вас нет времени, чтобы исправить / устранить проблему с ssh.

Это простое решение, перейдите по адресу c:/Users/user_name/.ssh/ и удалите все пары паб / закрытый ключ. Таким образом, heroku сгенерирует ключи для вас.

Я была такая же проблема. И я попытался сбросить свои ключи, как все говорили, но это все равно не сработало. Потому что я переименовал приложение.

Поэтому я сбросил ключи и переименовал приложение из консоли. Проверьте этот вопрос для получения дополнительной информации: проблема приложения Heroku push

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