Чи добре використовувати ключ SSH з порожньою парольною фразою?


34

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

Відповіді:


38

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

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

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


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

11

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

якщо ви хочете зашифрувати ваш приватний ключ, ви можете використовувати ssh-agentна своїй робочій станції для кешування незашифрованого ключа. коли ви хочете зберігати розшифрований ключ, ви запускаєте ssh-add ~/.ssh/id_rsaабо будь-який інший ваш приватний ключ. вам буде запропоновано ввести пароль, і розшифрований ключ буде доступний для ваших ssh-з'єднань до тих пір, поки ви не вийдете з системи, не вб'єте його ssh-agentчи вимкнете його.

ви можете killзберігати ключі, що зберігаються, ssh-agent -kі ви можете призначити термін експлуатації ключа в пам'яті, ssh-agent -t [seconds]наприклад, наприклад; якщо ви не хочете, щоб ваш ключ розшифровувався назавжди, але ви хочете зробити велику кількість ssh-ing навколо ваших хостів, ви можете встановити час очікування на 5-10 хвилин. тож вам не доведеться постійно вводити пароль свого ключа.

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

якщо ти схожий на мене, і ти тримаєш свій приватний ключ на накопичувачі пальців, ти, безумовно, захочеш зашифрувати це, навіть якщо це лише приватний ключ (окремий, з якого я використовую на своїй робочій станції, так що якщо я втрачаю свій ключ, я можу легко видалити відкритий ключ накопичувача зі списку головного диска зі ~/.ssh/authorized_keysсписку мого сервера , що також відображає / відмінно / причину додавати КОРИСНІ коментарі до ваших відкритих ключів)

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

о, я забув згадати; я запустити , ssh-agentколи я почала X, в іншому випадку де-зашифровані ключі я магазин з ssh-addне зберігаються з допомогою різних xtermсесій, і я повинен повторно вводити пароль кожного разу , коли я закрити xtermя почав ssh-addв в моєму. ~/.xinitrcфайл, у мене є:

if [ -x /usr/bin/ssh-agent ]; then
   eval $(/usr/bin/ssh-agent)
fi

У мене є заклик, який потрібно ssh-agentзавершити, evalоскільки ssh-агент повертає деякі змінні середовища, які потрібно встановити під час його запуску та запуску з ~/.xinitrc, змінні середовища є постійними протягом X сеансу.


Так - я знаю, що мені потрібно лише завантажити відкритий ключ. Просто я підключаю один сервер до іншого, саме тому я це згадав. Але дякую, що виписали цю чітку і продуману відповідь.
Мозіллалівес

добре, якщо ви використовуєте ssh-agentта використовуєте, ssh -A -i privkey user@hostце дозволить переадресувати ssh-агент, що дозволить вам отримати доступ до сервера з початкового сервера, не розміщуючи приватний ключ на першому сервері. ssh ланцюг не рекомендується, навіть якщо не включено пересилання ключів ssh, і ssh -Aє власні проблеми безпеки. немає причини, що ключ на сервері не може бути зашифрований, в той час як ключ на вашій робочій станції не містить паролів.
cpbills

3

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

  1. Захистіть ключ файловою системою.
  2. Використовуйте захищений паролем ключ і введіть його вручну при кожному перезапуску.
  3. Використовуйте захищений паролем ключ і зберігайте ключ у файловій системі для автоматизованого перезавантаження.

Кожна з них є вадою, тому все залежить від того, чого ти боїшся найбільше.


1

Для автоматизованого доступу, який, як ви говорите, потрібні ключі без паролів, я завжди використовую додаткові параметри санкціонованих_кілей (див. Sshd (8)) для обмеження команди, яку можна запустити.

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

Потім я також заблокував його до IP-адрес, які можуть з'єднуватися з цим ключем (не на 100% захищений від дурня, але добре з обмеженням команд.)


Відмінний момент - якщо ви вважаєте за потрібне використовувати незахищені ключі, найкраще, що ви можете зробити - це заблокувати його!
MikeyB

1

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


0

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

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

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

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


Навіть якщо вони входять із зовнішньої мережі, як це має значення? Має значення лише безпека клієнтського комп’ютера, з парольною фразою обробляється на стороні клієнта, правда?
njsg

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

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