Неможливо натиснути на Heroku, оскільки відбиток ключа


131

Я новачок у Rails, і я намагався розгорнути дуже просто додаток до Heroku. Це друге додаток, яке я розгортаю, і перше, що мені вдалося зробити це просто чудово. Однак у мене є деякі проблеми з цим. Щоразу, коли я " git push heroku master ", я отримую цю помилку:

! Ваш ключ із відбитками пальців xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx: xx не має права> отримувати доступ до my_heroku_app.

фатально: віддалений кінець повісив трубку несподівано

Я спробував керувати своїми ключами після входу в heroku. Якщо я ввійду в консоль « клавіші heroku », я отримую:

Немає ключів для моєї адреси.

Однак, якщо я запускаю команду " клавіші heroku: додайте " я отримую

Знайдено існуючий відкритий ключ: /Users/michele/.ssh/id_rsa.pub Завантаження відкритого ключа ssh /Users/michele/.ssh/id_rsa.pub! Відбитки пальців вже є. Будь ласка, використовуйте один ключ ssh для кожного облікового запису Heroku

Будь ласка, допоможи мені! Це суто роздратовано, я поняття не маю, що не так! Дякую

Відповіді:


288

У мене була така ж проблема, я без успіху дотримувався цієї публікації та інших людей: - ((

Нарешті я знайшов рішення: мені довелося додати свою нову ідентичність rsa у свою машину!

Отже, спершу я створив новий ключ rsa:

ssh-keygen -t rsa -C "giordano.scalzo[at]gmail.com" -f  ~/.ssh/id_rsa_heroku

потім додав його до моєї машини

ssh-add ~/.ssh/id_rsa_heroku

і, нарешті, до Хероку

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

Після того,

git push heroku master

працював як шарм!

Сподіваюся, це допомагає.


47
Це було для мене справді близько. Але було ще одне. У мене було два рахунки на героїку. Перший додав мій стандартний ключ SSH для моєї машини. Незалежно від того, що я намагався виправити свій другий обліковий запис, це не займе, поки я не вилучив з першого облікового запису ключ за замовчуванням. SSH-AGENT відправить перший ключ за замовчуванням, викликаючи цю проблему. Виправлення полягає у створенні конкретних ключів для heroku (не за замовчуванням) для кожного облікового запису
Tom Carchrae

13
У мене була така ж проблема, як у @TomCarchrae. Я вийшов із облікового запису, який, здавалося б, назавжди перейшов у heroku logoutсистему, увійшов до іншого облікового запису та видалив з цього облікового запису ключ RSA за замовчуванням. Після цього мені вдалося натиснути цим новоствореним ключем.
Росс Аллен

14
Особисто для мене я зробив еквівалент, ssh-add ~/.ssh/id_rsa_herokuхоча мій був, ssh-add ~/.ssh/identity.heroku.fooтому що я також використовую https://github.com/ddollar/heroku-accounts (менеджер декількох облікових записів для Heroku).
user664833

1
ще одне, про що слід пам’ятати - якщо у вас занадто багато ключів SSH, він не зможе ввійти, оскільки він намагається клавіші в порядку (і тоді вас буде вигнано з логіну занадто багато відмов). це, здається, є недоліком у ssh-агента (в будь-якому випадку ubuntu, але я припускаю і інших реалізацій). тому, якщо ви витягаєте волосся, спробуйте перемістити каталог ~ / .ssh і запустити новий (потім ви можете клацати ключі по черзі).
Tom Carchrae

7
Ви можете впливати, який ключ надсилається, додавши хост-запис у ~ / .ssh / config для heroku.com, вказуючи на потрібний ключ. Це було швидким виправленням для мене, оскільки він намагався використовувати мій ключ за замовчуванням і не вдається. Це, мабуть, не допоможе у випадку кількох облікових записів.
dnewcome

61

У мене теж є кілька ключів і кілька облікових записів heroku, тому я стикаюся з цією проблемою кожні кілька місяців. Як уже згадувалося Джордано Скальцо, Том Каркра та user664833, головна проблема - ssh-агент, яким ви керуєте за допомогою ssh-addкоманди. Сторінка man ( man ssh-add) насправді досить чітка і лаконічна, тому перевірте це.

Ви можете перерахувати всі ключі, про які ssh-агент знає:

ssh-add -l

Ви можете видалити всі ключі, про які ssh-агент знає:

ssh-add -D

Або видаліть певний ключ за допомогою

ssh-add -d ~/.ssh/id_rsa_example_key_file_use_your_own

Не хвилюйтесь! Ви фактично не видаляєте ключі, лише змінюєте, які з них ssh-агент автоматично намагається використовувати, наприклад, при спробі натиснути на heroku. Додавати та видаляти ключі за необхідності легко, тому для мене, коли я засмучується цією проблемою, найпростіший спосіб її виправити - видалити всі ключі та знову додати лише той, який я хочу використати на даний момент.

ssh-add -D
ssh-add ~/.ssh/id_rsa_example_use_this_one_i_mean_it

1
це добре працювало для мене, однак намагаючись додати назад мою замовчувану клавішу ssh, яка постійно запитала на отримання парольної фрази (на Mtn Lion), не думаю, що у мене є? Перезавантажився і повернувся до мого замовчування ssh все нормально - також знайшов цей stackoverflow.com/questions/7927750/…, який чудово працює
house9

ударивши голову об стіну на довгий час над цією, і це був останній необхідний крок - дякую!
griswoldbar

Якщо ви спробували перший метод, то цей, (і отримуєте помилку з дозволом (publickey) при спробі натиснути на пульт Heroku), ви, ймовірно, забули повторно запустити ключі heroku: add command. У будь-якому випадку, велике спасибі! Це зробило це для мене.
Hairgami_Master

38

На вашому комп'ютері є ключ SSH, але цей ключ SSH пов'язаний з іншим обліковим записом Heroku.

Якщо вам потрібно використовувати обидва облікові записи для різних програм на одному комп’ютері, вам слід створити новий ключ SSH на своєму пристрої та завантажити його в Heroku:

$ ssh-keygen

Не забудьте зберегти його як "/Users/User/.ssh/new_id_rsa.pub", коли підкаже запит.

$ heroku keys:add /Users/User/.ssh/new_id_rsa.pub 

Потім потрібно додати альтернативний хост для heroku.comсвого ~/.ssh/config:

Host heroku-alt
HostName heroku.com
IdentityFile ~/.ssh/new_id_rsa

А потім оновіть .git/configу своєму проекті, щоб використовувати псевдонім хоста:

[remote "heroku"]
  url = git@heroku-alt:myapp.git
  fetch = +refs/heads/*:refs/remotes/heroku/*

Вибираючи між файлами конкретних проектів між ними herokuта heroku-altвіддаленими ними, .git/configви можете керувати, які проекти використовують, які облікові дані.


1
Так, це теж було для мене проблемою. Доступ до двох облікових записів Heroku від одного клієнта. Дякую.
Бернар

Я намагаюся зробити цей метод, але «Host Heroku-альт» дає мені помилку: Host heroku-alt not found: 3(NXDOMAIN). Я кладу це в термінал на Mountain Lion. ~/.ssh/configНе існує також, лише купа .pubфайлів і один називається known_hosts. А ідеї?
JVG

@Jascination Вам потрібно буде створити ~ / .ssh / config та ввести вміст, вказаний у відповіді. Коли ви закінчите зберегти файл , і він буде містити Host, HostNameі на IdentityFileлінії. Тоді це повинно добре працювати.
Даніель Х Мур

3
Відмінно! Ця техніка така елегантна!
kinopyo

Людина! Ти неймовірний. Виконання крок за кроком нарешті приносить мені полегшення. Спасибі !!
софтвар

14

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

Heroku ідентифікує вас двома способами:

Перший - у .git / config

[heroku]
    account = acccount_name

Це, здається, дозволяє вам виконувати основні операції, використовуючи heroku

Другий спосіб ідентифікувати вас heroku - це будь-яка операція, яка використовує ssh (git push). Heroku ідентифікує вас за вашим ключем ssh, як зазначено тут: https://devcenter.heroku.com/articles/keys

Цей ключ використовується для сильної криптографії, яка однозначно ідентифікує вас як розробника при натисканні змін коду.

Отже, кожен обліковий запис heroku, над яким ви працюєте, повинен буде надіслати інший ключ для heroku при використанні ssh. Дотримуйтесь будь-якого підручника, щоб створити ключі ssh.

Ключовим моментом є отримання SSH для використання різних ключів для кожного облікового запису Heroku. Як це налаштувати? Вам потрібно буде зробити 2 речі:

1) Вам потрібно буде зробити "фіктивний" домен, який ваш .ssh / config перехопить і переконфігурує. Це покаже ssh 'фактичний' домен, який ви хочете, і який спеціальний ключ ssh використовувати.

Host heroku.my_unique_key
  HostName heroku.com
  IdentityFile ~/.ssh/identity.heroku.my_unique_key
  IdentitiesOnly yes

2) Змініть .git / config, щоб використовувати це під час використання git push. Замість heroku.com використовуйте фіктивний домен, який ви встановили у своєму .ssh / config

[remote "heroku"]
    url = git@heroku.com.git


[remote "heroku"]
    url = git@heroku.my_unique_key:myapp.git

Це все :) Трохи складне і водночас трохи просте. Мені знадобилося 3 роки, коли я стукав головою об стіну, а також спроби та помилки виявити цю інформацію Це має бути десь чітко зафіксовано, але принаймні це початок.


Унікальна річ з ім'ям хоста була моєю проблемою. Дуже дякую пікселеарту.
FluffyJack

Muchos Gracias Por Favor
EE33

9

вам потрібно буде створити нові ключі та додати їх

вкажіть нове ім'я файлу після запуску

ssh-keygen

тоді (в моєму випадку)

heroku keys:add /home/alex/.ssh/alex_heroku_rsa.pub

3

У мене те саме питання минулого тижня. Це пов'язане допомогло мені. Я сподіваюся, що це вам трохи допоможе. http://devcenter.heroku.com/articles/keys


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

Ви вирішили цю проблему?
Бенджамін

1
Чи можете ви узагальнити інструкції за цим посиланням? Тут ми намагаємось уникати лише відповідей на посилання.
восковий орел

Це пояснює лише те, як генерувати ключі, а не як керувати кількома.
Макаріо

3

У моєму випадку heroku keysвже був вказаний правильний ключ. Отже, все, що я мав зробити, це запустити, ssh-add /path/to/that/keyі тоді все почало працювати добре.


2

У мене також є два облікові записи Хеорку, і я, як обхід, "запросив" свій основний акаунт (той, чий ключ використовується Героку автоматично) як співавтора мого проекту.


1

Просто не хочеться додавати рішення для користувачів Windows.

  1. Спочатку скачайте "Генератор Putty Key"

  2. Створіть з ним ключ OBS, вам потрібно перемістити курсор миші на порожню область, щоб створити випадковість.

  3. Збережіть свої ключі, просто перейміть назву, щоб перейменувати свій ключ у [name] .pub

  4. Біжи heroku keys:addв терміналі!


0

У моєму випадку проблемою була версія ssh, яку я використовував. Я просто встановив змінну середовища GIT_SSH на іншу ("GIT_SSH = / usr / bin / ssh") і все для мене працювало нормально.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.