Heroku 'Дозвіл відмовлено (publickey) фатально: Неможливо прочитати з віддаленого сховища' біди


139

Я довгі години шукав, шукаючи рішення моєї, здавалося б, простої у вирішенні проблеми. Справа не в тому, що в моєму пошуку нічого не з’явилося, це в тому, що мій пошук виявив стільки різних рішень, жодне з яких не працювало.

У будь-якому випадку, я просто не в змозі натиснути, витягнути або взяти з мого сховища Heroku з мого Mac. Кожна спроба дає мені (ніби знущається з мене) таку помилку:

'Дозвіл відмовлено (publickey). fatal: Не вдалося прочитати з віддаленого сховища. '

Я намагався (і ще раз намагався) виправити це різними способами. Як я вже говорив, я провів гарний шматок останніх двох днів, шукаючи відповідь. Ось кілька речей, які я спробував:

  • клавіші heroku: ясно, після чого клавіші heroku: додати
  • Регенерувати ключ ssh самостійно за допомогою "ssh-keygen -t rsa"
  • Очищення мого каталогу .ssh з подальшими ключами heroku: clear, з подальшим створенням ssh ключа
  • Видалення мого додатка на heroku і відтворення його (на щастя, там не так багато)

Я можу отримати гарненько з мого сховища GitHub, тому я знаю, що це не мережеве підключення (також працює pinging heroku).

Як спрощене рішення (яке, я сподіваюся, не перетвориться на постійне), я увійшов у свій екземпляр Ubuntu Amazon AWS ec2. Підтягування та натискання на Хероку та з нього працює ідеально. З цієї причини я все ще відчуваю, що проблема полягає в клавіші ssh на моєму Mac. Обидва ключі відображаються під моїм обліковим записом Heroku. Чи важлива важлива адреса електронної пошти в кінці?

EDIT: Я можу добре відштовхуватися від GitHub (однак я не використовую ssh), то чому б не Heroku?

На даний момент я готовий спробувати все. Дякую!


Ви встановили пароль для свого героїчного ключа? І я вважаю, що це ( stackoverflow.com/a/16753800/6309 ) не допомагає? Або подвійної перевірки stackoverflow.com/a/16753800/6309
VonC

На жаль, він все ще відмовляється працювати.
thebradbain

іноді це трапляється, коли heroku знаходиться на технічному обслуговуванні: status.heroku.com
Mavis

Відповіді:


284

Я знаю, на це вже відповіли. Але я хотів би додати своє рішення, оскільки воно може бути корисним для інших у майбутньому.

Поширена помилка ключа: Permission denied (publickey). Ви можете виправити це, скориставшись keys:addсповіщенням Heroku про свій новий ключ.

Якщо коротко, виконайте ці кроки: https://devcenter.heroku.com/articles/keys

Спочатку потрібно створити ключ, якщо у вас його немає:

ssh-keygen -t rsa

По-друге, ви повинні додати ключ до Heroku:

heroku keys:add

2
Дякую Кріс, хтось із майбутнього :) це працює для мене
Ахмад Аджі

8
ключі heroku: додати, мій підручник пропустив, я здогадуюсь ... дякую! :)
Ole Henrik Skogstrøm

Ключ повинен бути згенерований лише у випадку, якщо у вас немає жодного альреді, у моєму випадку я мав ключ, і я просто потребував додати ключ до heroku
joseramonc

4
Перший - непотрібний. heroku keys:addдопоможе вам створити його, якщо у вас немає ключа.
Мигод

Запустити, ssh-keygen -t rsaякщо значення RSAне генерується інакше, heroku keys:addмає бути достатньо
Volatil3

122

Я просто думав, що поділюсь тим, що знайшов відповідь на власне запитання.

Виписання моєї проблеми зробило це ще більш зрозумілим для мене, і я далі дослідив, де я вважаю, що моя проблема лежить: ключ ssh

Виявляється, я мав рацію. Проблема була не в самому ключі, а в тому, що я не додав його до списку відомих ssh-ключів свого локального Mac. Тож хоч у мій обліковий запис Heroku було завантажено правильний ключ, мій Mac не міг автентифікувати його, оскільки він не міг знайти цей ключ на моєму комп’ютері. Рішення?

ssh-add ~/.ssh/id_rsa
#and, to confirm it's been added to the known list of keys
ssh-add -l

Я хотів би віддати кредит https://help.github.com/articles/error-permission-denied-publickey за те, що він є хорошим посиланням.


5
Дякую за відгук, точніший до вашої ситуації, ніж мій початковий коментар. +1
VonC

4
У Windows потрібно запустити Git Bash(клацніть папку правою кнопкою миші), а також запустити ssh-agentяку можна, запустивши `ssh-agent`(пам’ятайте зворотні кліщі), а потім додати ключ, як описано вище. Я повинен робити це кожен раз, коли запускаю Git Bash/ ssh-agent, він забуває, що було додано.
TWiStErRob

Я це зробив, і все ще не вийшло. Мені в кінцевому підсумку довелося додати змінну середовища під назвою HOME set до каталогу, в якій була моя папка .ssh
Джастін

Дякую - ніколи б цього не зрозумів!
Марк Хансен

Це вирішило мою проблему, не більш високу відповідь, дякую :)
Райан Броді

31

У мене була точно така ж помилка (у Windows 7), і причина була іншою. Я вирішив це по-іншому, тому я подумав, що сюди додамо причину та рішення для інших.

Навіть незважаючи на те, що помилка, здавалося, вказує на герою, справді помилка казала "Heroku can't get to the git repository". Я поклявся, що у мене однакові ключі на всіх серверах, тому що я створив їх і завантажив їх один за одним одночасно.

Провівши майже день на це, я зрозумів, що тому, що git показував мені лише відбиток пальця, а не власне ключ. Я не міг переконатися, що він відповідає клавіші на моєму HD або heroku. Я заглянув у відомий файл хостів і здогадався, що ... він показує ключі кожного сервера, і я зміг чітко побачити, що відкриті ключі git та heroku не відповідають.

1) Я видалив усі файли в моїй папці ключів, ключ від github за допомогою їх веб-сайту та ключ від heroku за допомогою git bash та команди heroku keys:clear

2) Дотримуйтесь інструкцій github тут, щоб створити нову пару ключів і завантажити відкритий ключ для git

3) використовуючи git bash- heroku keys:add для завантаження того самого ключа для heroku.

Зараз git push heroku masterпрацює.

який кошмар, сподіваюся, це комусь допомогло.

Брайан


1
Зламав мій мозок, поки я не побачив твій пост. Як тільки я зробив клавіші git та heroku однакові, все було добре. Але не розумію, чому вони повинні бути однаковими.
Kishore Masand

Дякую за відповідь, яку витратили віки з цією проблемою
Іван Бахер

дуже корисне посилання на документацію щодо git, все працює ідеально
HotJard

Це спрацювало для мене через пару днів спроб зрозуміти це. Я здивований, що Героку може залишитися в бізнесі з проблемою юзабіліті. Має бути простіший спосіб зробити це.
Лука Ф.

Дякую. Працювали для мене; лише одне: у посиланні github десь сказано зробити "ssh-add". Там у мене виникло питання, але я знайшов рішення тут: stackoverflow.com/questions/17846529/…
Алін Чьокан

17

Проблема, яка у мене була, полягає в тому, що я використовував лише https для свого облікового запису GitHub. Мені потрібно було переконатися, що мій обліковий запис GitHub був налаштований на доступ до ssh і що GitHub та heroku обидва використовували однакові відкриті ключі. Це кроки, які я здійснив:

  1. Перейдіть до каталогу ~ / .ssh та видаліть id_rsa та id_rsa.pub, якщо вони там є. Я почав з нових клавіш, хоча це може і не бути необхідним.

    $ cd ~/.ssh
    $ rm id_rsa id_rsa.pub
    
  2. Виконайте кроки на gitHub, щоб створити ключі ssh
  3. Увійдіть до heroku, створіть новий сайт та додайте свої відкриті ключі:

    $ heroku login
    ...
    $ heroku create
    $ heroku keys:add
    $ git push heroku master
    

6

У мене був той самий випадок на Linux ubuntu, і щойно його виправили, схоже, що ОС переплутався між /root/.ssh/ та home / user / .ssh / dir, що я зробив:

  1. видалено всі ключі з каталогу root та home / user .shh.
  2. створив новий ключ, обов'язково зверніть увагу на шлях створення (/home/you/.ssh/id_rsa) або (/root/.ssh/id_rsa)
  3. перевірте ключі heroku heroku keys
  4. якщо ключі там чіткі heroku keys:clear
  5. heroku keys:addтепер тут, якщо heroku не вдалося знайти ключ і попросили генерувати один правий ні, а це означає, що у вас є та сама проблема, що і у мене, виконайте команду add, як це, heroku keys:add /root/.ssh/id_rsa.pubшлях, який ви додасте, буде тим, який ви отримали на кроці 2
  6. спробуйте git push heroku masterзараз

3

Мій шлях на Windows 8

  1. Додайте каталог із ssh-keygen до системної змінної PATH, як правило, C: \ Program Files (x86) \ Git \ bin

  2. Відкрийте CMD, перейдіть до C: \ Users \ Me \

  3. Створити ключ SSH ssh-keygen -t rsa

    Введіть файл, у якому потрібно зберегти ключ (//.ssh/id_rsa): .ssh / id_rsa (змінити неправильний шлях за замовчуванням на .ssh / somegoodname_rsa)

  4. Додайте ключ до Heroku heroku keys:add

    Виберіть створений ключ зі списку

  5. Перейдіть у каталог додатків, напишіть гарний код

  6. Ініціюйте git repo git init git add . git commit -m 'chore(release): v0.0.1

  7. Створіть програму Heroku heroku create

  8. Розгорніть свій додаток git push heroku master

  9. Відкрийте додаток heroku open


2

Мав подібну проблему і спробував багато чого. Зрештою, для мене працювало - встановити Gnu на Windows ( https://github.com/bmatzelle/gow/releases ) і переконатися, що він використовував інструмент ssh всередині цього каталогу, а не той, що має Git. Після встановлення тесту з (переконайтесь, чи є у вашому оточенні PATH, що він передує Git \ bin)

C:\Git\htest2>which ssh
C:\Program Files (x86)\Gow\bin\ssh.BAT

Я використовував шпаклівку та тестування, як описано тут: http://rubyonrailswin.wordpress.com/2010/03/08/getting-git-to-work-on-heroku-on-windows-using-putty-plink-pageant/

Як тільки ключі будуть надіслані heroku (heroku ключі: додати c: \ Users \ Person.ssh \ id_rsa.pub), використовуйте

ssh -v <username>@heroku.com 

і переконайтеся, що ваш стек показує використання Putty - тобто робочого стека:

Looking up host "heroku.com"
Connecting to 50.19.85.132 port 22
Server version: SSH-2.0-Twisted
Using SSH protocol version 2
**We claim version: SSH-2.0-PuTTY_Release_0.62**
Using Diffie-Hellman with standard group "group1"
Doing Diffie-Hellman key exchange with hash SHA-1
Host key fingerprint is:
ssh-rsa 2048 8b:48:5e:67:0e:c9:16:47:32:f2:87:0c:1f:c8:60:ad
Initialised AES-256 SDCTR client->server encryption
Initialised HMAC-SHA1 client->server MAC algorithm
Initialised AES-256 SDCTR server->client encryption
Initialised HMAC-SHA1 server->client MAC algorithm
Pageant is running. Requesting keys.
Pageant has 1 SSH-2 keys
Using username "*--ommitted for security--*".
**Trying Pageant key #0**
Authenticating with public key "rsa-key-20140401" from agent
Sending Pageant's response
Access granted
Opened channel for session
Server refused to allocate pty
Server refused to start a shell/command
FATAL ERROR: Server refused to start a shell/command

Один, який працював раніше і не вдався:

C:\Git\htest2>ssh -v <username>@gmail.com@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/Users/Person/.ssh/identity type -1
debug1: identity file /c/Users/Person/.ssh/id_rsa type 1
debug1: identity file /c/Users/Person/.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/Users/Person/.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/Users/Person/.ssh/identity
debug1: Offering public key: /c/Users/Person/.ssh/id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Trying private key: /c/Users/Person/.ssh/id_dsa
debug1: No more authentication methods to try.
Permission denied (publickey).

Просто кажучи, що для цього використовується Windows 8 (8.1). Також здається, що інструмент GoW ssh є ключовим, оскільки мені вдалося це використовувати без шматочків шпаклівки та використовувати ssh-keygen.
користувач3484361

2

вам потрібно створити новий ключ ssh, ввівши наступне - ssh-keygen -t rsa

Потім вам потрібно додати: - ключі heroku: додати

Тоді якщо набираєте - героку відкрийте

Проблема вирішена.

У мене все одно працювало, ви можете спробувати ...


2

У мене така ж помилка, і тому що у мене 4 ssh-ключі, тому я спробував слідувати:

ssh-keygen -t rsa
heroku keys:add

потім відображаються чотири варіанти:

1) github_rsa.pub
2) id_boot2docker.pub
3) id_rsa.pub
4) sshkey.pub

Я вибираю 3), найновіший

Потім я виправляю помилку.


1

Я використовую цей метод для вирішення цієї проблеми Можливо, ви можете спробувати

"Увімкнути ssh-агент"

  1. Завантажте git

http://git-scm.com/

  1. Встановіть його

  2. Увімкніть ssh-агент

C: \ Програмні файли \ Git \ cmd

start-ssh-агент

Повідомлення відхиляється після того, як я включив агент Сподіваюся, що це допоможе вам


1

Я хотів би додати ще одне рішення, оскільки я його тут не бачив. Моя проблема полягала в тому, що heroku посилався на неправильну URL-адресу (оскільки я продовжував грати з іменами url). Редагування віддаленого URL вирішило мою проблему:

git remote set-url heroku <heroku-url-here>

0

У мене було те саме питання. І я спробував скинути свої клавіші, як усі казали, але все одно не вийшло. Тому що я перейменував додаток.

Тож, що я зробив, було скинути свої ключі, а також перейменувати додаток з консолі. Перегляньте це питання для отримання додаткової інформації: Проблема із програмою Heroku


0

Так Так просте рішення, перейдіть до c: /Users/user_name/.ssh/ і видаліть усі пари pub / private key, таким чином heroku генерує ключі для вас.


0

У мене була схожа помилка heroku ssh, яку я не міг усунути.

Як вирішення, я використав нову функцію heroku http-git (http транспорт для віддаленого "heroku" замість ssh). Детальніше тут: https://devcenter.heroku.com/articles/http-git

(Коротка версія: якщо у вас проект вже встановлений стандартним способом, запустіть heroku git: remote --http-init, щоб змінити "heroku" віддалене на http.)

Хороша швидка робота, якщо у вас немає часу виправити / вирішити проблему ssh.


У моєму випадку проблема, схоже, пов'язана з ":" 's у віддалених шляхах ssh. (Git 1.9.4 для Windows.) Чомусь ssh: // git @ host: repo не вдається "fatal: Не вдалося прочитати з віддаленого сховища", тоді як ssh: // git @ host / repo "вдається.
FullTimeCoderPartTimeSysAdmin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.