Проверка ключей SSH имеют парольные фразы


8

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

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

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

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

Спасибо!


Не могли бы вы уточнить, требуется ли иметь фразу-пароль или нет - и по каким причинам?
user1686 19.10.10

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

Ответы:


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

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