Ключ SSH з проханням пройти парольну фразу?


35

У мене є пара відкритих / приватних ключів. Жоден з них не пов’язаний із ними ніякої парольної фрази.

Кожен раз, коли я намагаюся зробити ssh, використовуючи приватний чи публічний (і я впевнений, що я повинен використовувати лише відкритий ключ), я отримую запит на отримання парольної фрази, і тоді, звичайно, не можу підключитися.

Хтось має ідею, як це обійти? Чи я неправильно набираю якусь команду? Я намагаюся ввімкнути сервер, який я встановив у своєму файлі ~ / .ssh / config (правильно, оскільки ця точно така ж установка працює на іншому сервері) з ключем, збереженим у ~ / .ec2 / key.ppk

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

Відповіді:


28

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

Найкраще здогадуватися, що ви намагаєтесь використовувати ppkформат ключа приватного ключа ( ) з opensh, це не працює .... У PuTTYgen є варіант експорту для openssh, якщо це так.

ssh-rsa AAAAB3NzaC1y...... etc

Я також припускаю, що на сервері, на який ви намагаєтеся ssh, щоб ваш відкритий ключ правильно зберігався у файлі авторизованого ключа ( ~/.ssh/authorized_keysзагалом).

Ще одна здогадка полягає в тому, що правильний ключ не обраний. Я б спробував:

Скидання фразової фрази за допомогою ssh-keygen, як це ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Це підтвердить, якщо насправді у вашому ключі вже є (або немає) фразу.

По-друге, я б спробував підключитися за допомогою багатослівного виводу, вказавши явно вихідний відкритий ключ:

$ ssh host -i ~/.ec2/key.ppk -vvv

Це дасть вам більше уявлення про те, що відбувається.


Правильно, це ключ, що генерується puttygen від ключа, який працює в шпаклівці. Коли я вкладаю шпаклівку на той же сервер (з машини, на якій розміщується екземпляр cygwin), він працює чудово з точно таким же ключем. Коли я намагаюся підключитися через ssh від cygwin, він бомбить. Мене бентежить, як змусити цю роботу.
llaskin

6
Я думаю, що пункти mrverrall полягають у тому, що формат файлу для приватного ключа PuTTY не такий, як формат файлу, який використовується для OpenSSH (ssh-клієнт у cygwin). Тож OpenSSH просто не використовує дані приватного ключа, оскільки не може з'ясувати, що означають ці дані. Але у PuTTY є варіант "експорту", тому ви можете отримати дані у потрібному форматі "PEM".
Філ П

Ця помилка також виникає, якщо файл у правильному форматі - тому двічі та потрійно перевіряйте, чи правильно ви скопіювали та вставили, якщо створюєте його вручну.
Даніель Соколовський

Це ssh-rsa AAAAB3NzaC1y...... etcформат з opensh, правда? Цей формат у мене в приватному ключі. У заголовку зазначено: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6Але файл зберігається як файл id_rsa. Чи означає це, що це все ще у форматі .ppk, навіть якщо назва файлу простоid_rsa
alpha_989

Дізнайтеся відповідь для різних форматів тут. У моєму випадку, хоча розширення файлу не було .ppk, воно все ще було у форматі шпаклівки, що мене бентежило, оскільки він показував усілякі помилки, але не давав мені прямого підказку, що проблема була у форматі ключа : stackoverflow.com/a/44391850/4752883
alpha_989

18

Ви можете запустити ssh-агент. Дивіться тут для обговорення.

Коротка версія, яка працювала на мене (в баші):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Я взяв 3 рядки, які перегукуються, і виконав їх. Ще один спосіб зробити це - взяти вихід -s:

$ eval `ssh-agent -s`

Потім я додав свої повноваження до нього:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

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

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


4

Під час налаштування відкритого ключа ви, ймовірно, (можливо, ненавмисно) налаштували його за допомогою парольної фрази.

Вам, мабуть, потрібно почати свіжим - я не використовував puttygen, але ви можете видалити (або перейменувати) відкритий ключ у вашому каталозі .ssh, використати ssh-keygenдля створення нового (обов'язково не вводячи парольну фразу), а потім поділіться public_key з файлом санкціонованих_кейсів на сервері, до якого ви намагаєтесь підключитися.

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


4

Переконайтеся, що в приватному ключі id_rsaв кінці немає додаткових розривів рядків, у деяких випадках додаткові розриви рядків змусять ssh-keygen запитати пароль, спробуйте це:

sed  '/^$/d' /path/to/key > id_rsa

тест:

ssh-keygen -yf id_rsa

2
OMG це була моя проблема. додатковий новий рядок після того, -----END RSA PRIVATE KEY-----як викликав його, щоб попросити парольну фразу для ключа, у якого не було одного набору!
edk750

3

Одне, що потрібно перевірити, якщо у вашому файлі sshd_config є StrictModes = так, то каталог $ HOME або каталог $ HOME / .ssh не повинні бути доступними для друку в групі чи іншому. Інакше аутентифікація не вдається, незалежно від того.


1

Я допустив помилку, випадково перезаписавши свій файл ~ / .ssh / id_rsa з моїм ~ / .ssh / id_rsa.pub. Це призведе до того, що ssh попросить пропустити фразу.


0

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

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

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


0

На OSX мені вдалося просто запустити:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

Пароль зберігався програмою Keychain Access, що знаходиться в папці Програми> Утиліти. Я щойно ввійшов id_у поле пошуку.


0

Спробуйте переглянути файли журналів на сервері. Див. / Var / log / auth log (наприклад, / var / log / authlog для OpenSSH, хоча я бачив, як деякі операційні системи використовують Portable OpenSSH та використовують /var/log/auth.log) і перевіряють кінець цього файлу.

Найпоширеніші причини, які я бачив, - це неправильні дозволи (як зазначено у відповіді TD1 ), хоча інші проблеми можуть бути у тому, що відкритий ключ (зберігається на сервері) не знаходиться у потрібному файлі, або цей ключ коментується, або неправильно написане ім’я користувача.

Також може бути корисним (для усунення несправностей) тимчасово надавати обліковому запису парольну фразу, просто щоб переконатися, що обліковий запис може бути успішно введений, коли ви це зробите.

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


0

У моїй команді, коли це трапляється, проблема не стосується нічого локального. Ключ ssh та / або доступ користувача не налаштовано правильно на сервері, до якого він підключається (у нашому випадку хостинг-платформа). Чомусь це запускає запит на неіснуючий ключ ssh.

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