Heroku 'Permission denied (publickey) fatal: Could not read from remote repository' беды


142

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

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

'В разрешении отказано (открытый ключ). фатальный: не удалось прочитать из удаленного репозитория. '

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

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

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

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

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

На данный момент я готов попробовать все. Благодарность!


Вы установили кодовую фразу для своего ключа heroku? И я полагаю, это ( stackoverflow.com/a/16753800/6309 ) не помогает? Или перепроверьте stackoverflow.com/a/16753800/6309
— VonC

К сожалению, он все еще отказывается работать.
— thebradbain

иногда такое случается, когда героку находится на обслуживании: status.heroku.com
— Mavis

Ответы:


286

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

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

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

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

ssh-keygen -t rsa

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

heroku keys:add

2
Спасибо, Крис, кто-то из будущего :), это работает для меня
— Ахмад Аджми

8
heroku keys: add был пропущен мой учебник, я думаю ... спасибо! :)
— Ole Henrik Skogstrøm

Ключ должен быть сгенерирован только в том случае, если у вас нет одного alredy, в моем случае у меня alredy был ключ, и мне просто нужно было добавить ключ к heroku
— joseramonc

4
Первый не нужен. heroku keys:addпоможет вам создать его, если у вас нет ключа.
— Mygod

Запускать, ssh-keygen -t rsaесли RSAне сгенерировано, в противном случае heroku keys:addдолжно быть достаточно
— Volatil3 05

122

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

Написание моей проблемы сделало ее еще более ясной для меня, и я дополнительно исследовал, в чем, по моему мнению, кроется моя проблема: ключ 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 за то, что он является хорошей ссылкой.


5
Спасибо за ваш отзыв, более точный для вашей ситуации, чем мой первоначальный комментарий. +1
— VonC

4
В Windows нужно будет запустить Git Bash(щелкните правой кнопкой мыши папку) и запустить, ssh-agentчто можно сделать, запустив `ssh-agent`( обратите внимание на обратные галочки), а затем добавить ключ, как описано выше. Мне приходится делать это каждый раз, когда я запускаю Git Bash/ ssh-agent, он забывает, что было добавлено.
— TWiStErRob

Я сделал это, но это все равно не сработало. В итоге мне пришлось добавить переменную окружения HOME, установленную в каталог, в котором находилась моя папка .ssh
— Джастин

Спасибо - никогда бы не догадалась!
— Марк Хансен

Это устранило мою проблему, а не ответ с более высокими оценками, спасибо :)
— Райан Броди

31

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

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

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

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

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

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

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

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

Брайан


1
Ломал себе голову, пока не увидел твой пост. Как только я сделал ключи git и heroku одинаковыми, все стало хорошо. Но не понимаю, почему они должны быть такими же.
— Кишор Масанд

Спасибо за ответ, потратил много времени на эту проблему
— Иван Бахер

очень полезная ссылка на документацию по git, все работает отлично
— HotJard

Это сработало для меня после нескольких дней попыток понять это. Я удивлен, что Heroku может оставаться в бизнесе с такой неприятной проблемой юзабилити. Должен быть более простой способ сделать это.
— Люк Ф.

Спасибо. Работал у меня; только одно: в ссылке на github где-то написано сделать "ssh-add". У меня возникла проблема, но я нашел решение здесь: stackoverflow.com/questions/17846529/…
— Алин Чокан

17

Проблема, с которой я столкнулся, заключалась в том, что я использовал только 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
    

6

У меня был такой же случай на 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 не смог найти ключ и попросил сгенерировать его правильно, нет, и это означает, что у вас такая же проблема, как у меня, выполните команду добавления, подобную этой heroku keys:add /root/.ssh/id_rsa.pub путь, который вы добавите, будет тем, который у вас есть на шаге 2.
  6. попробуй git push heroku masterсейчас

3

Мой путь в 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 git init git add . git commit -m 'chore(release): v0.0.1

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

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

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


2

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

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

Я использовал шпатлевку и pageant, как описано здесь: 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).

Просто чтобы сказать, что это использует Windows 8 (8.1). Также похоже, что инструмент GoW ssh является ключевым, поскольку я мог использовать его без кусочков замазки и использовать ssh-keygen.
— user3484361 01

2

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

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

Потом если набрать - героку открыть

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

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


2

У меня такая же ошибка, и поскольку у меня 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), самый новый

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


1

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

"Включить ssh-агент"

  1. Скачать git

http://git-scm.com/

  1. Установите это

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

C: \ Program Files \ Git \ cmd

start-ssh-agent

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


1

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

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

0

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

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


0

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


0

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

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

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

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


В моем случае проблема, похоже, связана с ":" в удаленных путях ssh. (Git 1.9.4 для Windows.) По какой-то причине ssh: // git @ host: repo завершается с ошибкой с сообщением «фатальный: не удалось прочитать из удаленного репозитория», в то время как ssh: // git @ host / repo завершается успешно.
— FullTimeCoderPartTimeSysAdmin,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.