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?

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

thebradbain
источник
Вы установили кодовую фразу для своего ключа 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 за то, что он является хорошей ссылкой.

thebradbain
источник
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
    
sjking
источник
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сейчас
oqx
источник
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).
user3484361
источник
Просто чтобы сказать, что это использует 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), самый новый

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

rocLv
источник
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>
ytv
источник
0

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

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

Алин Чокан
источник
0

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

00imvj00
источник
0

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

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

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

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

FullTimeCoderPartTimeSysAdmin
источник
В моем случае проблема, похоже, связана с ":" в удаленных путях ssh. (Git 1.9.4 для Windows.) По какой-то причине ssh: // git @ host: repo завершается с ошибкой с сообщением «фатальный: не удалось прочитать из удаленного репозитория», в то время как ssh: // git @ host / repo завершается успешно.
FullTimeCoderPartTimeSysAdmin,