Отказано в доступе (publickey) при развертывании кода героку. фатальный: удаленный конец неожиданно завис - PullRequest
844 голосов
/ 24 ноября 2010

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

git push heroku master

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

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

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

Ответы [ 34 ]

1463 голосов
/ 19 мая 2011

Вы должны загрузить свой открытый ключ в 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 ищет ключи в *Каталог 1029 *, в котором у нас нет открытых ключей, которые мы только что добавили в heroku (используя heroku keys:add ~/.ssh/id_rsa.pub) ( Обратите внимание, что в ОС Windows ~ относится к пути HOME, который в win 7/8is C:\Users\UserName)

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

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

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

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

144 голосов
/ 03 ноября 2011

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

->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

90 голосов
/ 16 января 2012

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

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

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
61 голосов
/ 15 августа 2011

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

33 голосов
/ 29 апреля 2012

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

heroku keys:clear
heroku keys:add

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

31 голосов
/ 10 ноября 2011

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

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

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

29 голосов
/ 14 февраля 2012

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

ssh-add ~/.ssh/my_heroku_key_rsa
15 голосов
/ 16 июня 2012

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

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

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

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

11 голосов
/ 07 июня 2012

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

 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

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

7 голосов
/ 05 декабря 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...