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

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

git push heroku master

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

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

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

34 ответа

Решение

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

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

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

heroku keys:add

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

heroku keys:clear

Для отображения всех существующих ключей выполните:

heroku keys

РЕДАКТИРОВАТЬ:

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

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

ssh -vT git@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/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 мог искать ключи в правильном каталоге).

  1. SO Ответ о том, как установить постоянную переменную среды Unix

  2. Так что вопрос по ssh ищет ключи в неправильном каталоге и решение для того же.

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

->heroku login

abc@gmail.com & пароль

->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 git@heroku.com:stark-dawn-1234.git -o heroku

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


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

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

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

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

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

$ heroku keys
=== 1 key for joe@example.com
ssh-dss AAAAB8NzaC...DVj3R4Ww== joe@workstation.local

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 joe@workstation.local

Вот ссылка, которая объясняет, как управлять вашими SSH-ключами: http://devcenter.heroku.com/articles/keys

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

heroku keys:clear
heroku keys:add

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

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

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

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

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

ssh-add ~/.ssh/my_heroku_key_rsa

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

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

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

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

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

 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

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

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

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

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

В 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 git@heroku.com:some-heiku-xxxx.git -o heroku

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

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

heroku keys:add

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

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

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

в

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

и после этого урока с ssh-keygen а также keys:add, оно работает!

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

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

Проверьте:

https://status.heroku.com/

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

Последовательность, чтобы следовать

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

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

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

Host heroku.com
Hostname heroku.com 
Port 22 
IdentitiesOnly yes 
IdentityFile ~/.ssh/ssh-dss
TCPKeepAlive yes 
User joe@workstation.local

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

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

  1. Я удалил все файлы id_rsa* и сгенерировал новый SSH, используя это руководство.
  2. Затем я уничтожил приложение heroku. Удален файл ~/.heroku/credentials.
  3. команда 'heroku create' (и поскольку файл учетных данных удален, он попросит вас указать ваш адрес электронной почты / пароль).
  4. В завершение напечатайте "ключи heroku: добавить", и он загрузит файл ~/.ssh/id_rsa.pub по умолчанию.
  5. Оно работает! Ну... Угу, но я действительно надеюсь, что это может помочь, потому что я весь день боролся, пытаясь понять это! ха-ха

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

  1. Перейдите в каталог.ssh в папке "Document and Settings" и удалите ключи git hub.
  2. запустить команду геройку клавиш: добавить

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

  1. перезапустить команду герою клавиш: добавить

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

  1. Теперь используйте Git Push Heroku Master

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

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

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

Я должен был сделать:

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

Тогда это сработало:

$ git push heroku master  

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

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

git remote -v

Затем удалите герою, который не так

git remote rm heroku

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

git remote add heroku git@heroku.com:sitename.git

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

Проверь свой.ssh конфиг на героку. Перейдите в папку.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.

Это звучит как твой ~/.ssh/authorized_keys файл настроен неправильно. Подтвердите это:

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

Если другие ответы не сработали для вас. Попробуй это!

Иногда все, что вам нужно, это нажать снова. Это случилось со мной сегодня из-за медленного интернет-соединения (когда вы скачиваете или используете p2p).

Пожалуйста, смотрите скриншот ниже:

введите описание изображения здесь

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

Вот что сработало для меня. Сайт heroku не добавляется к вашим известным хостам. Зайдите в окно-другое-покажите репозитории view-git-git. Оттуда клонирует хранилище. Как только вы клонируете его, удалите только что созданный репозиторий, а затем импортируйте его из меню "Файл". Делайте это, поскольку при клонировании репозитория он не добавляется в представление проводника. Теперь у вас должен быть репозиторий git и представление проводника.

При нажатии с помощью

git push heroku production:master 

ваш открытый ключ в домашнем каталоге ~/.ssh/id_rsa используется

Чтобы исправить это

Вы должны войти в систему как другой пользователь может быть root

sudo su 

затем начните заново, введя следующие команды

heroku keys:clear //removes existing keys
ssh-keygen -t rsa //generates a new key in ~/.ssh folder (set a password)
heroku keys:add   //uploads the new key, ~/.ssh/id_rsa is uploaded                      
git push heroku production:master

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

судо су

пароль

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

sudo git clone git@heroku.com......... -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

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

Сначала убедитесь, что скрытые файлы видны на вашем 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

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

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