Отказано в доступе (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 мог искать ключи в правильном каталоге).
У меня была та же самая проблема, шаги ниже работали для меня,
->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.
Надеюсь, это поможет.
Чтобы поделиться своим опытом:
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 возникают простои, вы получите эту ошибку при попытке нажать кнопку.
Проверьте:
до того, как взбеситься слишком сильно.
Последовательность, чтобы следовать
$ 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 и все должно работать.
Приведенный выше ответ работает, но обнаружил, что мне нужно было сделать несколько дополнительных шагов, прежде чем это сработало.
- Я удалил все файлы id_rsa* и сгенерировал новый SSH, используя это руководство.
- Затем я уничтожил приложение heroku. Удален файл ~/.heroku/credentials.
- команда 'heroku create' (и поскольку файл учетных данных удален, он попросит вас указать ваш адрес электронной почты / пароль).
- В завершение напечатайте "ключи heroku: добавить", и он загрузит файл ~/.ssh/id_rsa.pub по умолчанию.
- Оно работает! Ну... Угу, но я действительно надеюсь, что это может помочь, потому что я весь день боролся, пытаясь понять это! ха-ха
Проблема, с которой я столкнулся, была в Windows, и всякий раз, когда я запускал команду "heroku keys:add", он выбирал клавиши github. Итак, вот шаги, которые я следовал, чтобы решить проблему
- Перейдите в каталог.ssh в папке "Document and Settings" и удалите ключи git hub.
- запустить команду геройку клавиш: добавить
Приведенная выше команда попросила меня сгенерировать новые ключи, после чего был получен вывод Не удалось найти существующий открытый ключ. Хотите сгенерировать один? [Yn] Y Создание нового открытого ключа SSH. Загрузка открытого ключа SSH C:/Documents and Settings/Admin/.ssh/id_rsa.pub... сделано! Драгоценный камень 'heroku' устарел и заменен на инструментальный пояс Heroku, загрузите и установите его с https://toolbelt.heroku.com/.
- перезапустить команду герою клавиш: добавить
Приведенная выше команда не выдаст следующий вывод. Найдено существующий открытый ключ: C:/Documents and Settings/Admin/.ssh/id_rsa.pub Загрузка открытого ключа SSH C:/Documents and Settings/Admin/.ssh/id_rsa.pub... сделанный
- Теперь используйте Git Push Heroku Master
для меня с помощью вышеуказанных шагов решил проблему и смог развернуть приложение в облаке.
Я испытывал ту же проблему; следующие шаги должны помочь:
- Сначала авторизируйтесь: heroku login
- Очистить все ключи: ключи героя: очистить
- Удалить все файлы в локальной папке (все
.pub
файлы иknow_host
) в.ssh/ folder
- Войдите снова: 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. Хотя процедура должна быть такой же и в других.