Перевірка ssh-ключів має парольні фрази


8

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

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

Я спробував низку речей, як-от використання " ssh-agentі", ssh-addі тоді проблема виникає, коли ssh-addзапитують пароль.

Чи є спосіб отримати щось на кшталт opensslперевірки парольної фрази, трохи не виконати код повернення, 1якщо ключ має парольну фразу?

Дякую!


Чи можете ви уточнити, чи є вимога мати парольну фразу чи не мати її - і з яких причин?
користувач1686

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

Відповіді:


11

Якщо ключовий файл використовує фразу, до нього додається атрибут "Proc-Type:" зі словом "ВИДАЛЕНО".

Отже, ви можете визначити, чи використовує ключовий файл пароль, виконуючи його, findі grepпобачити, чи має він рядок "ВИДАЛЕНО".

# list keyfiles that USE a passphrase
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -exec grep -q "ENCRYPTED" {} \; -print

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

# list all keyfiles
HOMES=/home /mnt/nfs_home
find $HOMES -maxdepth 3 -type f -path '*/.ssh/id* -name "id_[dr]sa*" -print

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