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]
Ответ 4
Вот ссылка, которая объясняет, как управлять вашими ключами ssh: http://devcenter.heroku.com/articles/keys#adding_keys_to_heroku
Ответ 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 и представление проводника.