8

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

То, что я хочу сделать, это заставить этот скрипт проверить, что у любого заданного ssh-ключа пользователя есть пароль перед тем, как принять открытый ключ и распространить его.

Я пробовал несколько вещей, таких как использование ssh-agent и ssh-add а затем возникает проблема, когда ssh-add запрашивают фразу-пароль.

Есть ли способ заставить что-то вроде openssl проверить парольную фразу, слегка потерпеть неудачу с кодом возврата 1 если ключ имеет парольную фразу?

Спасибо!

1 ответ1

11

Если ключевой файл использует парольную фразу, он имеет атрибут «Proc-Type:», установленный со словом "ENCRYPTED".

Таким образом, вы можете определить, использует ли ключевой файл фразу-пароль, запустив ее с помощью команд find и grep чтобы проверить, содержит ли она строку «ENCRYPTED».

# 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .