Permission denied (publickey) при развертывании кода heroku. фатальный: удаленный конец неожиданно повесил трубку

Я пытаюсь развернуть мой код в heroku со следующей командной строкой:

git push heroku master

но получите следующую ошибку:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

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

Ответ 1

Вы должны загрузить свой открытый ключ в Heroku:

heroku keys:add ~/.ssh/id_rsa.pub

Если у вас нет открытого ключа, Heroku предложит вам добавить его автоматически, что работает без проблем. Просто используйте:

heroku keys:add

Чтобы очистить все предыдущие клавиши, выполните следующие действия:

heroku keys:clear

Чтобы отобразить все существующие клавиши, выполните следующие действия:

heroku keys

EDIT:

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

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

ssh -vT [email protected]

Будет отображаться следующая строка (Sample)

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/Wrong/Directory/.ssh/identity type -1
debug1: identity file /c/Wrong/Directory/.ssh/id_rsa type -1
debug1: identity file /c/Wrong/Directory/.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/Wrong/Directory/.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/Wrong/Directory/.ssh/identity
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_rsa
debug1: Trying private key: /c/Wrong/Directory/.ssh/id_dsa
debug1: No more authentication methods to try.

Permission denied (publickey).

Из вышесказанного вы можете заметить, что ssh ищет ключи в каталоге /c/Wrong/Directory/.ssh, где нет открытых ключей, которые мы только что добавили в heroku (используя heroku keys:add ~/.ssh/id_rsa.pub) (Обратите внимание, что в windows OS ~ относится к пути HOME, который в win 7/8 равен C:\Users\UserName)

Для просмотра текущего домашнего каталога выполните: echo $HOME или echo %HOME% (Windows)

Чтобы правильно установить каталог HOME (правильно я имею в виду родительский каталог каталога .ssh, так что ssh может искать ключи в правильном каталоге), ссылайтесь на эти ссылки:

Ответ 2

У меня была такая же проблема, следующие шаги работали для меня,

->heroku login

[email protected] и пароль

->cd C:\Users\yourusername\.ssh    (OR for cygwin shell ->cd ~/.ssh)

->ssh-keygen -t rsa -f id_rsa

если запрашивается какая-либо парольная фраза, не используйте пробел, заполните фразу, но не забывайте ее.

После генерации ключа вам нужно добавить его, например

$ ssh-add

и это героику

->heroku keys:add "id_rsa.pub"

изменить каталог на рабочее пространство, чем

->git clone [email protected]:stark-dawn-1234.git -o heroku

используйте кодовую фразу, которую вы установили выше.


Собственно, я также удаляю файлы ниже, но не уверен, что они являются imp,

C:\Users\yourusername.heroku\credientals и C:\Users\yourusername.ssh\known_hosts

Ответ 3

Эта проблема возилась со мной в течение нескольких дней.

Это может помочь.

1) Узнайте, какие ключи у вас есть в Heroku.

$ heroku keys
=== 1 key for [email protected]
ssh-dss AAAAB8NzaC...DVj3R4Ww== [email protected]

2) Создайте файл ~/.ssh/config:

$ sudo vim ~/.ssh/config

Изменить с помощью этой информации

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss # location and name of your private key
TCPKeepAlive yes 
User [email protected]

Ответ 5

У меня была такая же проблема, потому что у меня не было открытых ключей, поэтому я сделал:

heroku keys:clear
heroku keys:add

Это будет генерировать открытый ключ, а затем он хорошо работает

Ответ 6

Если вы пользователь Windows, другие решения здесь, вероятно, не помогут решить вашу проблему.

Я использую Windows 7 64-bit + Git -1.7.7.1-preview20111027, и решение заключалось в том, чтобы скопировать мои ключи от C:\users\user\.ssh до C:\Program Files (x86)\Git\.ssh. То, что этот клиент git ищет ключи при нажатии на герою.

Надеюсь, это поможет.

Ответ 7

Это решение для меня:

ssh-add ~/.ssh/my_heroku_key_rsa

Ответ 8

Чтобы поделиться своим опытом:

Git (моя собственная установка) искал ключ с именем 'id_rsa'.

Итак, я попытался переименовать мои ключи в 'id_rsa' и 'id_rsa.pub', и он сработал.

Btw, я уверен, что есть другой способ сделать это, но я еще не выглядел глубже.

Ответ 9

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

 heroku keys:remove //removes the existing key
 ssh-keygen -t rsa //generates a new key in ~/.ssh folder
 heroku keys:add    //uploads the new key, if no arguments r passed then the key generated                              
                    //in default directroy i.e., ~/.ssh/id_rsa is uploaded
 git push heroku

это должно работать.

Ответ 10

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

Попробуйте DSA вместо RSA, если он не работает для вас.

(Я использую Ubuntu 11.10, ruby ​​1.8.7, heroku 2.15.1)

Ответ 11

В Windows 7,64 бит вышеупомянутое решение (Onur Turhan's) работало для меня с небольшими изменениями ниже

C:\Users\MyName > heroku login

Введите адрес электронной почты/пароль

C:\Users\MyName >ssh-keygen -t rsa -f id_rsa

Это создало два файла (id_rsa и id_rsa.pub) в каталоге c:\Users\MyName (не в каталоге .ssh)

heroku keys:add id_rsa.pub
git clone [email protected]:some-heiku-xxxx.git -o heroku

Я думаю, что добавление правильного файла "id_rsa.pub" является самым важным. После создания открытого ключа с помощью keygen просто убедитесь, что вы добавляете правильный ключ, просматривая отметку времени, когда он был создан.

Ответ 12

Работает одна команда:

heroku keys:add

Он сделает один, если он не существует.

Ответ 13

У меня была эта проблема, когда TortoiseGIT был установлен на моей машине. После изменения переменной окружения GIT_SSH из

"c:\Program Files\TortoiseGit\bin\TortoisePlink.exe"

to

"c:\Program Files (x86)\Git\bin\ssh.exe"

и следуя этому руководству с помощью ssh-keygen и keys:add, он работает!

Ответ 14

Pushing работал у меня, а затем внезапно остановился.

Если heroku api испытывает простои, вы получите эту ошибку, когда будете пытаться нажать.

Check:

https://status.heroku.com/

прежде чем слишком усложняться.

Ответ 15

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

  • Я удалил все файлы id_rsa * и сгенерировал новый SSH с помощью этого руководства.
  • Затем я уничтожил приложение heroku. Удален файл ~/.heroku/credentials.
  • 'heroku create' (и поскольку файл учетных данных удаляется, он будет запрашивать ваш адрес электронной почты/пароль.
  • FINALLY введите "heroku keys: add", и он загрузит файл ~/.ssh/id_rsa.pub по умолчанию.
  • Это работает! Ну... YMMV, но я действительно надеюсь, что это может помочь, поскольку я изо всех сил пытался понять это! Ха-ха

Ответ 16

Последовательность следовать

$ heroku login
$ ssh-keygen -t rsa
$ heroku keys:add

При выполнении второго оператора он запрашивает ввод, просто нажмите Enter (возврат) три раза, и будет добавлен ключ.

Ответ 17

Для всех тех, кто попробовал все, что упоминалось выше в Windows 7, и все же это не сработало, вот что я сделал: - откройте GitBash.exe из каталога Git C:\Program Files (x86)\Git\(не открывайте командную строку, это не сработает). - добавьте следующее, как указано выше , но вы должны удалить #

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes 
User [email protected]

теперь запускайте git push heroku master, и он должен работать.

Ответ 18

Похоже, что ваш файл ~/.ssh/authorized_keys настроен неправильно. Убедитесь, что:

  • Это правильный путь.
  • Разрешения для файла - 0600.
  • Разрешения ~/.ssh равны 0700.

Ответ 19

Мне пришлось делать:

$ ssh-keygen -t rsa  
$ heroku keys:add  

Затем он работал:

$ git push heroku master  

Ответ 20

Проверьте конфигурацию .ssh для heroku. Перейдите в папку .ssh и откройте файл конфигурации

cd ~/.ssh
subl config

"subl" - это для Sublime Text, но вы можете использовать любой редактор. Найдите строку "IdentityFile" и убедитесь, что в ней есть не публичный ключ:

IdentityFile "/Users/ircmullaney/.ssh/my_ssh"

не

IdentityFile "/Users/ircmullaney/.ssh/my_ssh.pub"

Это сделало это для меня. Я не уверен, почему у меня была общедоступная версия в файле конфигурации, но это произошло, и она выдавала ошибку:

Permissions 0644 for '/Users/ircmullaney/.ssh/my_ssh.pub' are too open.

Ответ 21

У меня все еще были проблемы после попытки всех этих идей. Это была моя проблема:

Мой удаленный репозиторий геройку был запутан. Я обновил его следующим образом:

git remote -v

Затем удалите геройку, которая неверна:

git remote rm heroku

Затем добавьте новый

git remote add heroku [email protected]:sitename.git

Вы можете получить sitename со страницы настроек Heroku для своего приложения. Удачи!

Ответ 22

Проблема, с которой я столкнулся, была в Windows и всегда, когда я запускаю клавиши "heroku: add", она выбрала ключи github. Итак, вот шаги, которые я предпринял для решения проблемы.

  • перешел в каталог .ssh в папке "Документ и настройки" и удалил ключи концентратора git
  • запустите команду ключи героя: добавить

Вышеприведенная команда попросила меня сгенерировать новые ключи, после чего был вывод   Не удалось найти существующий открытый ключ.   Вы хотите его создать? [Yn] Y   Создание нового открытого ключа SSH.   Загрузка открытого ключа SSH C:/Documents and Settings/Admin/.ssh/id_rsa.pub... done   ! Драгоценный камень "героку" устарел и заменен на Heroku Toolbelt, загрузите и установите с https://toolbelt.heroku.com.

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

Вышеуказанная команда не даст следующий результат   Найден существующий открытый ключ: C:/Documents and Settings/Admin/.ssh/id_rsa.pub   Загрузка открытого ключа SSH C:/Documents and Settings/Admin/.ssh/id_rsa.pub... done

  • Теперь используйте мастер git push heroku master

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

Ответ 23

У меня была та же проблема; следующие шаги должны помочь:

  • Сначала войдите в систему: heroku login
  • Удалить все ключи: ключи героя: очистить
  • Удалите все файлы в локальной папке (все .pub файлы и know_host) в .ssh/ folder
  • Войдите в систему еще раз: имя пользователя heroku - u будет запрашивать без ключа, поэтому следуйте инструкциям на экране.

Ответ 24

Я просто хотел бы добавить, что каталог не обязательно C:\Users\[username] \. ssh. Это каталог, в котором вы создали свой открытый ключ.

Например, мой домашний каталог в Windows был изменен на C:\[username]. Ваш домашний каталог в подпапке .ssh является лучшим и наиболее вероятным местом, где вы, возможно, создали свои ключи. Вы можете проверить свой домашний каталог в Windows с помощью команды:

    echo %HOMEPATH%

Ответ 25

Если вы хотите использовать "sudo", например:

sudo git clone [email protected] -o heroku

вы также должны генерировать ключ ssh для вашего пользователя root.

sudo su
cd /root/.ssh  
ssh-keygen -t rsa
....
heroku keys:add id_rsa.pub

и он будет работать.

если вы не используете пользователя root, вместо этого создайте ключ ssh в своем каталоге.

cd /home/user/.ssh

Извините, если мои предложения испорчены...

Ответ 26

Попробуйте восстановить разрешения в Disk Utility (Mac OS X). Помог мне

Ответ 27

Сначала убедитесь, что скрытые файлы видны на вашем Mac. Если этого не сделать:

  • Откройте терминал и введите defaults write com.apple.Finder AppleShowAllFiles TRUE
  • killall Finder

Следующие шаги:

  • Переход к Users/user_name/.ssh/ удаляет все файлы.
  • Открытие типа терминала в ssh-keygen -t dsa
  • Затем heroku keys:add ~/.ssh/id_dsa.pub

N.B. Я сделал это в Mac OSX 10.7.2 Lion. Хотя процедура должна быть одинаковой и в других.

Ответ 28

У меня тоже есть эта проблема. Я использую Mac OSX. То, как я исправил это, должен был войти в систему как admin

sudo su

пароль

Ответ 29

Решение dmajkic помогло мне наконец:

Для пользователей Windows это может означать: git client coudnt найти ваши ключи. Проверьте ключи в c:\Users\UserName.ssh\и! переменная среды HOME = c:\Users\UserName\

Ответ 30

Вот что сработало для меня. Сайт heroku не добавляется к вашим известным хостам. Перейдите в window-other-show view- git -git репозитории. Оттуда клонирует репозиторий. После того, как вы клонируете его, удалите созданный репозиторий и затем импортируйте его из меню файла. Сделайте это, когда вы клонируете репозиторий, он не добавляет его в представление проводника. Теперь вы должны иметь репозиторий git и представление проводника.