Діалогове вікно пароля з'являється, коли для дозволів приватного ключа SSH встановлено 0600


71

Я встановив свій приватний ключ SSH ~/.ssh/id_rsaі встановив його дозволи 0600. Коли я підключаюсь до SSH-сервера, який використовує мій приватний ключ у Terminal.app через ssh, з'являється діалогове вікно і просить мене ввести свій пароль для доступу до id_rsaфайлу:

введіть тут опис зображення

Я бачу той самий діалог, коли я підключаюся до FTP-сервера з клієнтом Interarchy GUI.

Оновлення: це діалогове вікно я бачу щоразу під час підключення, незалежно від того, чи не встановлено прапорець "Запам'ятати пароль у моїй брелоку". Він з’являється ще два рази, якщо натиснути кнопку ОК, незалежно від того, що введено у полі пароля.

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

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
@ ПОПЕРЕДЖЕННЯ: Незахищений приватний ключовий файл! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
Дозволи 640 для '/Users/myusername/.ssh/id_rsa' занадто відкриті.
Рекомендується, щоб файли вашого приватного ключа НЕ були доступні іншим.
Цей приватний ключ буде проігноровано.
неправильні дозволи: ігнорувати ключ: /Users/myusername/.ssh/id_rsa

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

Примітка. У мене працює Mac OS X 10.6.8.

Відповіді:


70

Переконайтеся, що у вас є відповідний id_rsa.pubабо id_dsa.pubу вашому ~/.sshкаталозі.

Коли у мене з'явився відповідний, id_rsaале не відповідний id_rsa.pub, Mac OS X продовжував спливати діалогове вікно і пам'ятаю, що passowrd у моєму брелоку нічого не робив.

cd ~/.ssh
ssh-keygen -y -f id_rsa > id_rsa.pub

створив відповідний файл відкритого ключа для мене.

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

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


2
Це рішення може не мати багато сенсу на перший погляд, але спробуйте. У мене була точно така ж проблема, і вона її вирішила. Я завжди використовую пароль на своїх ключах ssh, і ви також повинні.
Алекс Рекарей

3
Це рішення працювало на мене. Не має сенсу, але це працює! (OS X Lion)
bruno077

2
Нічого собі, це не має сенсу, але це точно виправило багато дивної поведінки в моїй системі. Дякую.
Warren Pena

2
За все життя я не міг вже кілька днів розібратися у вирішенні того ж питання, і це вирішило для мене. Це зовсім не має сенсу, але це вирішило мою проблему! Дякую, підтримуємо.
Danny Englander

OMG дякую! Ці діалоги працювали для мене (гірський лев та користування SourceTree).
Себастьян Састре

91

Спочатку запустіть ssh-add -Kі перевірте, чи вирішує це ваша проблема.

Якщо ні:

  • Вилучив файл rsa_id.pub і відновив новий (повинен бути у ~ / .ssh /):

    ssh-keygen -y -f id_rsa > id_rsa.pub
  • Для дозволених дозволів встановлено 600 для id_rsa та id_rsa.pub (має бути в ~ / .ssh /):

    chmod 600 id_rsa*
  • Виконати таку команду:

    ssh-add -K

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


7
Йшов INSANE, поки я не наткнувся на вашу команду "ssh-add -K". Я не вірю, наскільки складний OSX справив. +1000
eduncan911

4
fwiw, мені потрібно було chmod 600(замість 644), щоб він працював
кенгукс

1
Приватний ключ із 644 - це не
буено

15
ssh-add -Kвирішив мою проблему
виступ

2
Не вимагаючи, поки chmod 644 не буде виправлено до chmod 600, це небезпечно.
Томаш Кафка

20

У моєму випадку ssh-add -Kне зробили фокусу, мені довелося вказати ключ:

ssh-add ~/.ssh/id_rsa

немає -Kваріант більше. Ваше рішення виправило це. Цікаво, чому мені це потрібно було робити. Ніколи не було підказок пароля.
DannyRe

Дякую! Це коли OS X Sierra нарешті запитав мій пароль id_rsa.
Томаш Кафка

2
FWIW, -Kпрапор працював для мене на Сьєррі 10.12.2
Кріс Вагнер

Так. Я можу підтвердити. -К існує і вирішує проблему в новій Сьєррі! Гарна робота @nathancahill.
Метт Комарницький

17

Для macOS 10.12 Sierra ssh-add -Kпотрібно запускати після кожного перезавантаження. Щоб уникнути цього, створюйте ~/.ssh/configцей вміст.

Host *
   AddKeysToAgent yes
   UseKeychain yes
   IdentityFile ~/.ssh/id_rsa

Apple додала Technote 2449, який пояснює, що сталося.

Перед macOS Sierra, ssh представив діалогове вікно із запитом вашої парольної фрази та запропонував би можливість зберігати її у брелок. Цей користувальницький інтерфейс деякий час тому був застарілий і його було видалено.

Редагувати: мабуть, вказувати хост і ключ не потрібно. Достатньо лише додати цього.

AddKeysToAgent yes
UseKeychain yes

Це те, що працювало для мене. Спочатку я спробував ssh-add -K, але зміна працюватиме лише до перезавантаження.
Gandalf458

Мені потрібно було поставити AddKeysToAgentна верхній рівень ~/.ssh/config.
Радон Росборо

12

Вам потрібно кудись ввести пароль для приватного ключа, і OS X використовує ssh-агент за замовчуванням.

Якщо ви хочете використовувати ssh-агент, але хочете уникнути діалогового вікна gui, ви можете використовувати ssh-add, щоб додати пароль до агента, а потім ssh, як зазвичай.

Якщо ви не хочете використовувати ssh-агент і замість цього мати ssh-підказку для парольної фрази, вимкніть змінну середовища SSH_AUTH_SOCK.


Спасибі, Альреша. Чи знаєте ви, чи є спосіб зберігати пароль вашого приватного ключа в брелоку Mac OS X постійно (не лише для одного сеансу)?
titaniumdecoy

3
Ви можете спробувати 'ssh-add -K' у Терміналі, але якщо є помилка, коли прапорці не працюють, то це може не працювати. Я не хочу, щоб мої ssh-фрази зберігалися в брелоках, тому я цього не перевіряв.
zzz

З ssh-add -Kмоїм паролем не потрібно вводити пароль, але підказка все одно з’являється; Я просто відкидаю це.
titaniumdecoy

3
ssh-add -K - це те, що ви використовуєте для додавання свого пароля в брелок. Якщо ви не введете свій пароль, він не може бути поставлений на брелок.
zzz

1
додаток: І в Lion, і в Snow Leopard, якщо я ввожу ssh-add -K, я отримую підказку в Terminal - не діалогове вікно.
zzz

8

Коли ви послабите дозволи, ключ ігнорується. Ви нічого не отримаєте, зробивши це.

Якщо ви хочете використовувати ключ, не вводячи пароль кожен раз, у вас є два варіанти.

Якщо ви встановите прапорець "Запам'ятати пароль у моїй брелоку", вам не доведеться вводити пароль кожен раз: він буде зберігатися у брелок з усіма вашими іншими паролями. Це рекомендований варіант.

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


Дякую за відповідь, хоча одне, що я забув зазначити - перевірка параметра "Запам'ятати пароль у моєму брелоку" не має ефекту: діалогове вікно з’явиться наступного разу, коли я підключуюся. (Використання порожньої парольної фрази для мене не є можливим.)
titaniumdecoy

3
Запропонувати замінити захищений паролем ключ на ключ без пароля - це справді жахлива ідея ...
Schmurfy

5

якщо ви додали свій приватний ключ до каталогу source / / .ssh, і ви ввели ssh-add -K, щоб додати його до брелка, і у вас є вміст вашого відкритого ключа скопійований у .ssh / autoriziran_keys (для правильності акаунт) файл на цільовому сервері діалогове вікно відключається.

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


3

У мене однаково проблема з Lion (Mac OS X 10.7). Я думаю, що це помилка ... Якщо аутентифікація ssh є паролем, клієнт спочатку проходить відкритий ключ, що є нормальним. Однак, незважаючи на те, що ви вирішите зберегти парольну фразу на брелоку (що не потрібно для автентифікації пароля) наступного разу, коли буде встановлено нове з'єднання ssh, вас знову запитають про парольну фразу ...


1
Я також розглядаю це як помилку, все працювало нормально зі сніговим леопардом, але щоразу, коли мій комп'ютер повертається зі сну, знову задається пароль ключа ssh, хоча я перевіряв "пам'ятати його" востаннє, коли він запитував! Дуже дратує ...
Шмурфі

3

Не потрібно регенерувати ваші відкриті ключі. Ви можете просто виконати ці дві команди:

chmod 0600 ~/.ssh/id_rsa.pub
ssh-add ~/.ssh/id_rsa

В основному вам потрібно посилити дозволи на файл відкритого ключа, і вам потрібно додати свій ключ до агента автентифікації OSX.


3

В останній версії macOS (10.12.2 - Сьєрра) це просте виправлення. Просто відредагуйте ~ / .ssh / config та увімкніть параметр UseKeychain:

Host *
UseKeychain yes

Зберегти та вирішити.


2

Ця проблема виникла в моїй системі OS X 10.7.4, коли помер ssh-агент. Перезавантаження усунула проблему. (Ви можете спробувати перезапустити ssh-агент, але я не знаю, чи Keychain досить розумний, щоб забрати новий ssh-агент.)


Це те, що моя проблема також виправлена ​​після того, як на годину тупали.
DannyRe

2
  1. Будьте впевнені, що ~ / .ssh / є chmod 700.

  2. Будьте впевнені, що файли ~ / .ssh / id * обидва chmod 600.

  3. Запустіть / Програми / Утиліти / Keychain Access.app та відновіть брелок.

  4. Вийти. (Перезавантаження не було б страшною ідеєю)

  5. Вхід

  6. Якщо проблема не зникає, перемістіть наявні файли ~ / .ssh / id * на робочий стіл і спробуйте створити нові ключі за допомогою ssh-keygen -t dsa -f ~/.ssh/id_dsa -C you@youremail.tldта перевірте, чи працюють нові клавіші краще.

Я на Леві, але IIRC Snow Leopard працював так само.

ps - кожен, хто пропонує використовувати порожню фразу ssh, повинен бути примушений носити знак, щоб інші люди знали, що не приймати до них поради.


1

Регенерація відкритого ключа для мене, здається, не працює (10.8), а також генерування нового ключа SSH. Якщо я, наприклад, запускаю git pull після блокування брелка входу, з’являється діалогове вікно, щоб вимагати пароль до ключа, а не спершу намагатися отримати пароль із брелока входу.

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


Привіт, це виглядає як окреме запитання, а не відповідь на це питання. Чи можете ви повторно опублікувати як нове запитання?
Скотт

1

Ще одне цікаве висновок - якщо ви скопіюєте та вставте вміст файлу PEM, у вас може закінчитися відсутність тире. Тому просто не забудьте додати заключний рядок як:

-----END RSA PRIVATE KEY-----

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

1

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

# Change working directory
cd ~/.ssh
# Remove the old public key
rm id_rsa.pub
# Create a new public key
ssh-keygen -y -f id_rsa > id_rsa.pub
# Change permission
chmod 600 id_rsa*
# Add the key to ssh
ssh-add id_rsa
# Then finally test it (I used github)
ssh -i id_rsa.pub git@github.com

Заключна команда повинна вивести щось на зразок: Hi <user>! You've successfully authenticated, but GitHub does not provide shell access.


0

У мене була така ж проблема. Здається, я це виправив.

1) Резервне копіювання шляхом перейменування на старі файли id_dsa та id_dsa.pub.

2) Запустив новий кейген із порожньою фразою.

Працює з періодом запуску завдань моніторингу віддаленого сервера, а також входу з ssh в терміналі.

У мене в терміналі швидка функція authme, оскільки в моєму .bash_profile є наступне

#~/.bash_profile    
function authme {
ssh $1 'cat >>.ssh/authorized_keys' <~/.ssh/id_dsa.pub
}

Тож швидкий authme remoteserver.com скопіює новий віддалений ключ.

Я думаю, що помилка чимось пов’язана з тим, що пароль не перетворюється (у мого старого Snow Leopard його взагалі не було).

Спробуйте це і подивіться, чи допоможе це.

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

Owain.


Використання порожньої парольної фрази для мене не є варіантом, на жаль
titaniumdecoy

0

У мене була подібна проблема. Виявилося, що приватний ключ, який я використовував, був у неправильному форматі. Я використовував PuTTY Key Generator на своїй машині Win, а ssh на OS X очікує іншого формату - Відкрити формат SSH.

Виявилося, що інструмент, який я використовував для генерації цього ключа (PuTTY Key Generator), мав можливість конвертувати мій ключ priv у формат, необхідний Open SSH.

Простий як:

  1. Відкрийте PuTTY Key Gen
  2. Завантажте свій приватний ключ
  3. Виберіть Конверсії> Експорт ключа OpenSSH.

Збережений файл містить оригінальний приватний ключ у відповідному (OpenSSH) форматі.


0

Переконайтесь, що:

  1. Ви використовуєте формат pem для свого приватного ключа. Це тому, що Mac використовує opensh клієнт, який працює з pem. PPK є фірмовим форматом putty і не сумісний з openssh. Ви можете легко конвертувати ppk в pem за допомогою putty keygen, якщо у вас є лише ppk.
  2. Дозволи на ваш файл pem - 600. Приватні ключі мають бути доступними лише їх власникові. Отже, якщо дозволи дозволяють отримати доступ до читання будь-якому іншому, це вважатиметься загрозою безпеці.

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


-1

Використовуйте ключ .pem, а не ключ .ppk.


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