Администрирование FreeBSD, Linux, ... man ssh-keygen Sat, February 22 2025  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.


man ssh-keygen Печать
Добавил(а) microsin   

SSH-KEYGEN(1) BSD General Commands Manual

NAME

   ssh-keygen - утилита генерации ключей аутентификации OpenSSH.

SYNOPSIS

   ssh-keygen [-q] [-a rounds] [-b bits] [-C comment] [-f output_keyfile]
              [-m format] [-N new_passphrase] [-O option] [-t dsa | ecdsa
               | ecdsa-sk | ed25519 | ed25519-sk | rsa] [-w provider]
              [-Z cipher]
   ssh-keygen -p [-a rounds] [-f keyfile] [-m format] [-N new_passphrase]
              [-P old_passphrase] [-Z cipher]
   ssh-keygen -i [-f input_keyfile] [-m key_format]
   ssh-keygen -e [-f input_keyfile] [-m key_format]
   ssh-keygen -y [-f input_keyfile]
   ssh-keygen -c [-a rounds] [-C comment] [-f keyfile] [-P passphrase]
   ssh-keygen -l [-v] [-E fingerprint_hash] [-f input_keyfile]
   ssh-keygen -B [-f input_keyfile]
   ssh-keygen -D pkcs11
   ssh-keygen -F hostname [-lv] [-f known_hosts_file]
   ssh-keygen -H [-f known_hosts_file]
   ssh-keygen -K [-a rounds] [-w provider]
   ssh-keygen -R hostname [-f known_hosts_file]
   ssh-keygen -r hostname [-g] [-f input_keyfile]
   ssh-keygen -M generate [-O option] output_file
   ssh-keygen -M screen [-f input_file] [-O option] output_file
   ssh-keygen -I certificate_identity -s ca_key [-hU] [-D pkcs11_provider]
              [-n principals] [-O option] [-V validity_interval]
              [-z serial_number] file ...
   ssh-keygen -L [-f input_keyfile]
   ssh-keygen -A [-a rounds] [-f prefix_path]
   ssh-keygen -k -f krl_file [-u] [-s ca_public] [-z version_number] file ...
   ssh-keygen -Q [-l] -f krl_file file ...
   ssh-keygen -Y find-principals [-O option] -s signature_file
              -f allowed_signers_file
   ssh-keygen -Y match-principals -I signer_identity -f allowed_signers_file
   ssh-keygen -Y check-novalidate [-O option] -n namespace -s signature_file
   ssh-keygen -Y sign [-O option] -f key_file -n namespace file ...
   ssh-keygen -Y verify [-O option] -f allowed_signers_file -I signer_identity
              -n namespace -s signature_file [-r revocation_file]

ОПИСАНИЕ

Утилита ssh-keygen генерирует, обслуживает и преобразует ключи аутентификации для ssh(1). ssh-keygen может создавать ключи для использования протокола SSH версии 2.

Тип генерируемого ключа задается опцией -t option. Если утилита запускается без аргументов, то будут сгенерирован ключ RSA.

ssh-keygen также используется для генерации групп, для использования протокола согласования Диффи-Халмана (Diffie-Hellman group exchange, DH-GEX). Подробности см. в секции MODULI GENERATION.

И наконец, ssh-keygen может использоваться для генерации и обновления списков отзыва ключей (Key Revocation Lists), и для проверки, являются ли ключи отозванными. Подробности см. в секции СПИСКИ ОТЗЫВА КЛЮЧЕЙ.

Обычно каждый пользователь, который хочет использовать публичный ключ SSH для аутентификации, запускает эту утилиту для создания ключа аутентификации в ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk или ~/.ssh/id_rsa. Дополнительно системный администратор может использовать ssh-keygen для генерации ключей хоста.

Обычно ssh-keygen генерирует ключ и запрашивает имя файла для сохранения приватного ключа. Публичный ключ сохраняется в файл с таким же именем, к которому добавляется суффикс “.pub”. Программа также запрашивает фразу пароля. Фраза пароля (passphrase) может быть пустой, что соответствует её отсутствию (ключи хоста должны иметь пустую фразу пароля), либо может быть строкой произвольной длины. Фраза пароля подобна паролю, за исключением того, что она может быть последовательностью слов, символов пунктуации, пробелов или любых символов, какие захотите. Хорошая фраза пароля имеет длину 10-30 символов, не составляющих простые предложения, иначе она может быть легко угадана (английская проза имеет только 1-2 бита энтропии на символ, что дает очень плохие фразы пароля). Эти фраза должна содержать смесь символов верхнего и нижнего регистра, чисел и не алфавитно-цифровых символов. Фраза пароля может быть позже изменена с помощью опции -p.

Не существует способа восстановить потерянную фразу пароля. Если фраза пароля потеряна или забыта, то должен быть сгенерирован новый ключ и соответствующий публичный ключ копируется на другие машины.

Утилита ssh-keygen по умолчанию записывает ключи в специальном формате OpenSSH. Этот формат предпочтителен, поскольку предоставляет лучшую защиту ключей в состоянии покоя, а также позволяет хранить смысловые комментарии в самом файле приватного ключа. Комментарий ключа может быть полезен, чтобы помочь идентифицировать ключ. Комментарий инициализируется в "user@host" при создании ключа, но может быть изменен с помощью опции -c.

Сохраняется возможность записать приватные ключи в ранее используемом формате PEM с помощью флага -m. Это может использоваться при генерации новых ключей, и существующий новый формат ключей может быть преобразован с помощью этой опции при совместном использовании флага -p (изменение фразы пароля).

После того, как ключ сгенерирован, ssh-keygen запросит, куда ключи должны быть размещены.

Список опций:

-A    Для каждого типа ключа (rsa, dsa, ecdsa and ed25519), для которого ключи хоста не существуют, генерируются ключи хоста с путем файла ключа по умолчанию, пустой фразой пароля, битами по умолчанию типа ключа и комментарием по умолчанию. Если также указана опция -f, её аргумент используется как префикс к пути по умолчанию к генерируемым файлам ключа. Это используется для скриптов системного администрирования, чтобы генерировать новые ключи хоста.

-a rounds Когда сохраняется приватный ключ, эта опция указывает число раундов KDF (key derivation function, в настоящее время bcrypt_pbkdf(3)). Большее число приводит к более медленной проверке фразы пароля и повышению устойчивости к взлому пароля методом грубого перебора (в случае кражи ключей). По умолчанию используется 16 раундов.

-B    Показывает дайджест указанного файла приватного или публичного ключа.

-b bits Указывает количество бит создаваемого ключа. Для ключей RSA минимальный размер 1024 бита, и по умолчанию используется 3072 бита. Обычно 3072 считается достаточным. Ключи DSA должны быть точно 1024 бита, как указывается FIPS 186-2. Для ключей ECDSA флаг -b определяет длину ключа путем выбора одного из трех размеров: 256, 384 или 521 бит. Попытка использовать длины ключа, отличающиеся от этих трех значений для ключей ECDSA приведет к ошибке. Ключи ECDSA-SK, Ed25519 и Ed25519-SK имеют фиксированную длину, и флаг -b будет игнорироваться.

-C comment Предоставляет новый комментарий.

-c    Изменение комментария в файлах приватных и публичных ключей. Программа запросит файл, содержащий приватные ключи, фразу пароля, если ключ его имеет, и новый комментарий.

-D pkcs11 Загрузит публичные ключи, предоставленные PKCS#11 shared library pkcs11. При использовании в комбинации с -s, эта опция показывает, что ключ CA находится в токене PKCS#11 (см. секцию CERTIFICATES для получения подробностей).

-E fingerprint_hash Указывает алгоритм хэша, используемый при отображении отпечатков ключа. Допустимы опции: "md5" и "sha256". По умолчанию используется "sha256".

-e    Эта опция прочитает файл приватного или публичного ключа OpenSSH и напечатает в stdout публичный ключ в одном из форматов, указанных опцией -m. По умолчанию формат экспорта "RFC4716". Эта опция позволяет экспортировать ключи OpenSSH для использования другими программами, включая несколько коммерческих реализаций SSH.

-F hostname | [hostname]:port
      Поиск для указанного имени хоста hostname (с опциональным номером порта port) в файле known_hosts, с перечислением всех найденных вхождений. Эта опция полезна, чтобы найти хешированные имена или адреса хостов, а также может использоваться в сочетании с параметром -H для печати найденных ключей в хешированном формате.

-f filename Указывает имя файла для ключа.

-g    Использовать традиционный (generic) DNS-формат при печати записей ресурсов отпечатка ключа с помощью команды -r.

-H    Хеш файла known_hosts. При этом все имена хостов и адреса заменяются хешированными представлениями в указанном файле; оригинальное содержимое перемещается в файл с суффиксом .old. Эти хеши могут обычно использоваться ssh и sshd, но они не раскрывают идентифицирующую информацию, если содержимое файла будет раскрыто. Эта опция не меняет существующие хешированные имена хостов, и следовательно его можно безопасно использовать с файлами, которые смешивают хешированные и не хешированные имена.

-h    При подписании ключа создает сертификат хоста вместо сертификата пользователя. См. секцию CERTIFICATES для получения подробностей.

-I certificate_identity Указывает удостоверение (identity) при подписании публичного ключа. См. секцию CERTIFICATES для получения подробностей.

-i    Эта опция прочитает незашифрованный файл приватного (или публичного) ключа в формате, указанном опцией -m и напечатает OpenSSH-совместимый приватный (или публичный) ключ в stdout. Эта опция позволяет импортировать ключи из другого программного обеспечения, включая некоторые коммерческие реализации SSH. По умолчанию формат импорта "RFC4716".

-K    Загрузит резидентные ключи из аутентификатора FIDO. Файлы публичного и приватного ключа будут записаны в текущую директорию для каждого загруженного ключа. Если присоединено несколько аутентификаторов FIDO, ключи будут загружены из первого подключенного аутентификатора.

-k    Генерирует файл KRL. В этом режиме ssh-keygen будет генерировать файл KRL в месте, указанном флагом -f, который отменит каждый ключи или сертификат, представленный в командной строке. Ключи/сертификаты, подлежащие отзыву, могут быть указаны файлом открытого ключа или с помощью формата, описанного в секции СПИСКИ ОТЗЫВА КЛЮЧЕЙ.

-L    Напечатает содержимое одного или нескольких сертификатов.

-l    Покажет отпечаток указанного файла публичного ключа. Для ключей RSA и DSA утилита ssh-keygen пытается найти совпавший файл публичного ключа и выведет его отпечаток. Если -l комбинируется с -v, то с отпечатком поставляется визуальное ASCII-графическое представление ключа.

-M generate Генерирует кандидата Diffie-Hellman Group Exchange (DH-GEX) параметров для возможного использования метода обмена ключа 'diffie-hellman-group-exchange-*'. Номера, сгенерированные этой операцией, должны быть предварительно проверены перед использованием. Для дополнительной информации см. секцию MODULI GENERATION.

-M screen Проверка (скрининг) параметров кандидата для Diffie-Hellman Group Exchange. Это примет список номеров кандидатов и проверит, что они являются безопасными (Sophie Germain) простыми числами с приемлемыми групповыми генераторами. Результаты этой операции могут быть добавлены в файл /etc/ssh/moduli. Для дополнительной информации см. секцию MODULI GENERATION.

-m key_format Указывает формат ключа для генерации, опции преобразования -i (import), -e (export), и опции изменения фразы пароля -p. Последняя может использоваться для преобразования между форматами приватного ключа OpenSSH и форматами приватного ключа PEM. Поддерживаемые форматы ключа: "RFC4716" (публичный или приватный ключ RFC 4716/SSH2), "PKCS8" (публичный или приватный ключ PKCS8) или "PEM" (публичный ключ PEM). По умолчанию OpenSSH запишет новый сгенерированный приватный ключ в своем собственном формате, однако когда происходит преобразование публичных ключей для экспорта, формат по умолчанию "RFC4716". Установка формата "PEM" при генерации или обновлении поддерживаемого типа приватного ключа приведет к тому, что ключ сохранится в устаревшем (legacy) формате приватного ключа PEM.

-N new_passphrase Предоставит новую фразу пароля.

-n principals Указывает одного или несколько субъектов (имена пользователя или хоста), включенных в сертификат при подписывании ключа. Могут быть указаны несколько субъектов, отделенные друг от друга запятыми. Подробности см. в секции СЕРТИФИКАТЫ.

-O option Указывает опцию ключ/значение. Они специфичные для операции, которая запрашивалась для ssh-keygen.

Когда подписываются сертификаты, здесь может быть указан один из вариантов, перечисленных в разделе СЕРТИФИКАТЫ.

Когда происходит moduli-генерация или скрининг, здесь может быть указан один из вариантов, перечисленных в секции MODULI GENERATION.

Когда генерируется ключ, который размещается на аутентификаторе FIDO, этот флаг может использоваться при указании опций, специфичных для ключа. Представлены следующие поддерживаемые опции:

      application
         Переназначает строку по умолчанию FIDO application/origin "ssh:". Это может быть полезно, когда генерируется резидентные ключи хоста или ключи, специфичные для домена. Указываемая строка приложения должна начинаться на "ssh:".

      challenge=path
         Указывает путь к строке вызова (challenge string), которая будет передана токену FIDO во время генерации ключа. Challenge-строка вызова может использоваться как часть внеполосного (out-of-band) протокола для регистрации ключа (случайный вызов, random challenge используется по умолчанию).

      device
         Явно указывает устройство fido(4) для использования, вместо того, чтобы позволить промежуточному программного обеспечения токена выбрать одно из них.

      no-touch-required
         Указывает, что созданный приватный ключ не должен требовать событий касания (touch events, присутствие пользователя) при создании сигнатур. Обратите внимание, что sshd(8) отклонит такие сигнатуры по умолчанию, если они не переопределены с помощью опции authorized_keys.

      resident
         Указывает, что ключ должен храниться на самом аутентификаторе FIDO. Резидентные ключи могут поддерживаться токенами FIDO2 и обычно требуют, чтобы PIN-код был установлен на токене до генерации. Резидентные ключи могут быть загружены из токена с помощью ssh-add(1).

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

      verify-required
         Указывает, что этот закрытый ключ должен требовать проверки пользователя для каждой подписи. Не все токены FIDO поддерживают эту опцию. В настоящее время PIN-аутентификация является единственным поддерживаемым методом проверки, но в будущем могут поддерживаться другие методы.

      write-attestation=path
         Может использоваться во время генерации ключа для записи данных аттестации, возвращенных из токенов FIDO во время генерации ключа. Эта информация потенциально является конфиденциальной. По умолчанию эта информация отбрасывается.

При выполнении опций, связанных с сигнатурой, с использованием флага -Y, принимаются следующие опции:

      hashalg=algorithm
         Выберет алгоритм хеша для хеширования подписываемого сообщения. Допустимыми алгоритмами являются "sha256" и "sha512". По умолчанию "sha512".

      print-pubkey
         Печатает публичный ключ в стандартный вывод после верификации сигнатуры.

      verify-time=timestamp
         Указывает время, используемое при проверке сигнатур вместо текущего времени. Время может быть указано как дата в формате YYYYMMDD или время в формате YYYYMMDDHHMM[SS].

Опция -O может быть указана несколько раз.

-P passphrase Предоставляет (старую) фразу пароля.

-p    Запрашивает изменение фразы пароля файла приватного ключа вместо создания нового приватного ключа. Программа спросит файл, содержащий приватный ключ, старую фразу пароля, и дважды новую фразу пароля.

-Q    Проверяет, были ли ключи отозваны в KRL. If the -l option is also specified then the contents of the KRL will be printed.

-q    "Тихий" запуск ssh-keygen.

-R hostname | [hostname]:port
      Удалит все ключи, принадлежащие указанному имени хоста hostname (с опциональным номером порта port) из файла known_hosts. Эта опция полезна для удаления хешированных хостов (см. опцию -H выше).

-r hostname Напечатает запись отпечатка ресурса SSHFP с именем hostname для указанного файла публичного ключа.

-s ca_key Сертификация (подпись) публичного ключа с помощью указанного ключа центра авторизации (CA key). Подробности см. в секции СЕРТИФИКАТЫ.

Когда генерируется KRL, -s указывает путь до файла публичного ключа CA для отзыва сертификатов непосредственно по идентификатору ключа (key ID) или серийному номеру. См. секцию СПИСКИ ОТЗЫВА КЛЮЧЕЙ для получения подробностей.

-t dsa | ecdsa | ecdsa-sk | ed25519 | ed25519-sk | rsa
      Указывает тип создаваемого ключа. Возможные значения "dsa", "ecdsa", "ecdsa-sk", "ed25519", "ed25519-sk" или "rsa".

Этот флаг может также использоваться, чтобы указать желаемый тип сигнатуры, когда подписываются сертификаты с помощью ключа RSA CA. Доступны варианты RSA сигнатуры "ssh-rsa" (сигнатуры SHA1 не рекомендуются), "rsa-sha2-256" и "rsa-sha2-512" (по умолчанию).

-U    Когда используется в комбинации с -s, эта опция показывает, что ключ CA размещен в ssh-agent(1). Для дополнительной информации см. секцию СЕРТИФИКАТЫ.

-u    Обновит KRL. Когда указано вместе с -k, перечисленные через командную строку ключи добавляются к существующему KRL вместо создания нового KRL.

-V validity_interval
      Указывает интервал действия при подписи сертификата. Интервал действия может состоять из одного времени, указывающего на то, что сертификат действителен с настоящего момента и истекает в это время, или может состоять из двух времен, разделенных двоеточием, чтобы указать явный интервал времени.

Время начала может быть указано строкой "always", чтобы показать у сертификата нет времени начала, датой формата YYYYMMDD, временем формата YYYYMMDDHHMM[SS], относительным временем (к текущему времени), содержащим знак минуса, за которым идет интервал в формате, описанном в секции TIME FORMATS sshd_config(5).

Время окончания может быть указано датой YYYYMMDD, временем YYYYMMDDHHMM[SS], относительным временем, начинающимся с символа плюс или строки "forever", чтобы показать, что сертификат не имеет даты истечения срока действия.

Например: "+52w1d" (действителен от настоящего момента до 52 недель и одного дня от настоящего момента), "-4w:+4w" (действителен от 4 недель ранее до 4 недель от настоящего момента), "20100101123000:20110101123000" (действителен от 12:30 PM 1 января 2010 до 12:30 PM 1 января 2011), "-1d:20110101" (действителен от вчерашнего дня до полуночи 1 января 2011), "-1m:forever" (достоверен от одной минуты ранее до бесконечности).

-v    Подробный режим. Заставляет ssh-keygen печатать отладочные сообщения, информирующие о внутренних процессах обработки. Это помогает для отладки генерации moduli. Несколько опций -v повышают уровень подробности. Максимальное количество 3.

-w provider Указывает путь до библиотеки, которая будет использоваться при создании FIDO authenticator-hosted ключей, переназначая использование по умолчанию внутренней поддержки USB HID.

-Y find-principals
      Найдет объект (объекты), связанный с публичным ключом сигнатуры, предоставленным флагом -s в файле авторизованных подписантов, указанном с помощью флага -f. Формат дозволенного файла подписантов документирован в секции РАЗРЕШЕННЫЕ ПОДПИСАНТЫ далее. Если один или большее количество объектов найдено, то они будут возвращены в стандартный вывод.

-Y match-principals
      Найдет объект, совпавший с именем объекта, предоставленном флагом -I в файле авторизованных подписантов с помощью флага -f. Если один или большее количество объектов найдено, то они будут возвращены в стандартный вывод.

-Y check-novalidate
      Проверит, имеет ли сигнатура, сгенерированная с помощью подписи ssh-keygen -Y, допустимую структуру. Это не подтверждает, что сигнатура исходит из авторизованного подписавшего. При тестировании сигнатуры ssh-keygen принимает сообщение на стандартном вводе и пространство имен сигнатуры с помощью -n. Файл, содержащий соответствующую подпись, также должен быть предоставлен с помощью флага -s. Об успешной проверке сигнатуры показывает нулевой статус выхода ssh-keygen.

-Y sign
      Криптографически подписывает файл или какие-то данные с помощью ключа SSH. При подписании ssh-keygen принимает в командной строке 0 или большее количество файлов для подписи - если файлы не указаны, то ssh-keygen будет подписаны данные, представлены на стандартном вводе. Сигнатуры записываются по пути входного файла с добавлением к имени суффикса ".sig", или в стандартный вывод, если подписываемое сообщение было прочитано из стандартного ввода.

Используемый для подписи ключ указывается опцией -f, и может ссылаться либо на приватный ключ, либо на публичный ключ с приватной половиной, доступной через ssh-agent(1). Дополнительное пространство имен сигнатур, используемое для предотвращения путаницы сигнатур в различных доменах использования (например, подпись файла или подпись электронной почты), должно быть предоставлено через флаг -n. Пространства имен являются произвольными строками и могут включать в себя: "file" для подписи файла, "email" для подписи сообщения электронной почты. Для пользовательского применения рекомендуется использовать имена по шаблону NAMESPACE@YOUR.DOMAIN для создания однозначных пространств имен.

-Y verify Запрашивает проверку сигнатуры, сгенерированной с помощью ssh-keygen -Y подписи, как описано выше. При проверке сигнатуры ssh-keygen принимает сообщение на стандартном вводе и пространство имен сигнатуры с помощью -n. Файл, содержащий соответствующую сигнатуру, должен быть также предоставлен с помощью флага -s, вместе с идентификатором подписавшего, используя -I и список разрешенных подписантов через опцию -f. Формат разрешенных подписантов документирован далее в секции РАЗРЕШЕННЫЕ ПОДПИСАНТЫ. Файл, содержащий отозванные ключи, может быть передан опцией -r. Файл отзыва может быть KRL или список публичных ключей по одному на строку. Успешная проверка авторизованным подписантом показывается нулевым статусом возврата ssh-keygen.

-y    Эта опция прочитает файл приватного ключа формата OpenSSH format и напечатает публичный ключ OpenSSH в stdout.

-Z cipher Указывает шифр cipher, используемый для шифрования, когда записывается файл приватного ключа в формате OpenSSH. Список доступных шифровальщиков может быть получен с помощью "ssh -Q cipher". По умолчанию используется "aes256-ctr".

-z serial_number Указывает серийный номер для встраивания в сертификат, чтобы отличить этот сертификат от других на одном и том же центре сертификации (CA). Если serial_number снабжен префиксом из символа '+', то серийный номер будет инкрементироваться для каждого сертификата, подписанного в одной командной строке. Значение серийного номера по умолчанию 0.

При генерации KRL используется флаг -z, чтобы указать номер версии KRL.

MODULI GENERATION

ssh-keygen может использоваться для генерации групп протокола Diffie-Hellman Group Exchange (DH-GEX). Генерация этих групп происходит по двухэтапному процессу: сначала кандидаты в простые числа генерируются с помощью быстрого, но интенсивного по расходу памяти процесса. Затем эти кандидаты на простые числа тестируются на пригодность (интенсивным по расходу ресурсов CPU процессом).

Генерация простых чисел выполняется с помощью опции -M generate. Желаемая длина простых чисел может быть указана опцией -O bits.

Например:

   # ssh-keygen -M generate -O bits=2048 moduli-2048.candidates

По умолчанию поиск простых чисел начинается со случайной точки в желаемом диапазоне длины. Это можно отменить используя опцию старта -O, которая укажет другую начальную стартовую точку (в hex формате).

Как только набор кандидатов был сгенерирован, они должны быть проверены на пригодность. Это может быть выполнено с помощью опции -M. В этом режиме ssh-keygen прочитает кандидатов из стандартного ввода (или файла, если использовалась опция -f). Например:

   # ssh-keygen -M screen -f moduli-2048.candidates moduli-2048

По умолчанию каждый кандидат будет подвергнут 100 тестам на примитивность. Это можно переназначить опцией -O prime-tests. Значение генератора DH будет выбрано автоматически для рассматриваемого основного потока. Если требуется конкретный генератор, его можно запросить с помощью опции -O generator. Допустимы значения generator 2, 3 и 5.

Проверенные группы DH могут быть инсталлированы в /etc/ssh/moduli. Важно, чтобы этот файл содержал модули диапазона длин бит.

Опции, доступные для moduli генерации и проверки через флаг -O:

lines=number
      Выход после проверки (скрининга) указанного количества строк при выполнении проверки кандидатов DH.

start-line=line-number
      Начать скрининг по указанному номеру строки при выполнении скрининга кандидатов DH.

checkpoint=filename
      Записать последнюю обработанную строку в указанный файл при выполнении проверки кандидатов DH. Это будет использовано для пропуска строк во входном файле, которые уже были обработаны, если задание перезапущено.

memory=mbytes
      Указывает количество используемой памяти (в мегабайтах) когда генерируется кандидат moduli для DH-GEX.

start=hex-value
      Указывает стартовая точка (в hex) при генерации кандидата moduli для DH-GEX.

generator=value
      Указывает желаемый генератор (десятичным значением) при тестировании кандидата moduli для DH-GEX.

СЕРТИФИКАТЫ

ssh-keygen поддерживает подписание ключей для создания сертификатов, которые могут использоваться для аутентификации пользователя или хоста. Сертификаты состоят из публичного ключа, некоторой идентификационной информации, 0 или большего количества имен объектов (пользователя или хоста) и набора опций, подписанных ключом центра сертификации (Certification Authority, CA). Затем клиенты или серверы могут доверять только ключу CA и проверять его сигнатуру в сертификате вместо того, чтобы доверять множеству ключей пользователя/хоста. Обратите внимание, что сертификаты OpenSSH используют другой, намного более простой формат по сравнению с сертификатами X.509, используемыми в ssl(8).

ssh-keygen поддерживает 2 типа сертификатов: пользователя и хоста. Сертификаты пользователя аутентифицируют пользователя для серверов, в то время как сертификаты хоста аутентифицируют хосты сервера для пользователей. Для генерации сертификата пользователя:

      $ ssh-keygen -s /path/to/ca_key -I key_id /path/to/user_key.pub

Полученный сертификат будет помещен в /path/to/user_key-cert.pub. Сертификат хоста требует опции -h:

      $ ssh-keygen -s /path/to/ca_key -I key_id -h /path/to/host_key.pub

Сертификат хоста будет выведен в /path/to/host_key-cert.pub.

Можно подписать, используя ключ CA, сохраненный в токене PKCS#11, предоставляя библиотеку токенов с помощью -D, идентифицируя ключ CA путем предоставления его открытую половину к качестве аргумента для -s:

      $ ssh-keygen -s ca_key.pub -D libpkcs11.so -I key_id user_key.pub

Подобным образом есть возможность размещения ключа CA в ssh-agent(1). Это показывается флагом -U, и опять-таки ключ CA должен быть идентифицирован своей публичной половиной ключа.

      $ ssh-keygen -Us ca_key.pub -I key_id user_key.pub

Во всех случаях key_id является "идентификатором ключа", который регистрируется сервером, когда сертификат используется для аутентификации.

Сертификаты могут быть ограничены, чтобы быть действительными для набора имен участников (пользователь/хост). По умолчанию созданные сертификаты действительны для всех пользователей или хостов. Чтобы создать сертификат для указанного набора участников:

      $ ssh-keygen -s ca_key -I key_id -n user1,user2 user_key.pub
      $ ssh-keygen -s ca_key -I key_id -h -n host.domain host_key.pub

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

Допустимые опции для сертификатов пользователя:

clear    Очистка всех дозволенных разрешений. Это полезно для очистки набора разрешений по умолчанию, чтобы разрешения могли быть добавлены индивидуально.

critical:name[=contents]
extension:name[=contents]
      Подключает произвольную критическую опцию или расширение сертификата. Указанное имя должно включать суффикс домена, например "name@example.com". Если содержимое указано, то оно включается как содержимое расширения/опции, закодированное в виде строки, иначе расширение/опция создается без содержимого (обычно указывает на флаг). Расширения могут быть игнорированы клиентом или сервером, который их не распознает, в то время как неизвестные критические параметры сразу приведут к отказу сертификата.

force-command=command
      Принудительное выполнение команды вместо любого шелла или команды, указанной пользователем при использовании сертификата для аутентификации.

no-agent-forwarding
      Запрет перенаправления ssh-agent(1) (по умолчанию разрешено).

no-port-forwarding
      Запрет перенаправления порта (по умолчанию разрешено).

no-pty   Запрет выделения PTY (по умолчанию разрешено).

no-user-rc Запрет выполнения ~/.ssh/rc демоном sshd(8) (по умолчанию разрешено).

no-x11-forwarding
      Запрет перенаправления X11 (по умолчанию разрешено).

permit-agent-forwarding
      Разрешает перенаправление ssh-agent(1).

permit-port-forwarding
      Разрешает перенаправление порта.

permit-pty
      Разрешает выделение PTY.

permit-user-rc
      Разрешает выполнение ~/.ssh/rc демоном sshd(8).

permit-X11-forwarding
      Разрешает перенаправление X11.

no-touch-required
      Не требуется, чтобы подписи, сделанные с использованием этого ключа, включали демонстрацию присутствия пользователя (например, путем прикосновения пользователя к аутентификатору). Эта опция имеет смысл только для алгоритмов FIDO-аутентификатора ecdsa-sk и ed25519-sk.

source-address=address_list
      Ограничивает адреса источника, с которых сертификат считается действительным. Здесь address_list это список, разделенный запятыми, состоящий из одного или большего количества пар address/netmask в формате CIDR.

verify-required
      Требуется для сигнатур, сделанных с использованием этого ключа, показывать предварительную проверку пользователя. Эта опция имеет смысл только для алгоритмов FIDO-аутентификатора ecdsa-sk и ed25519-sk. В настоящее время PIN-аутентификация является единственным поддерживаемым методом проверки, но в будущем могут поддерживаться другие методы.

В настоящее время нет действительных стандартных опций для ключей хоста.

И наконец, для сертификатов могут быть определена допустимость по времени жизни. Опция -V позволяет указать время начала и окончания действия сертификата. Сертификат, представленный за пределами этого диапазона, не считается действительным. По умолчанию сертификаты действительны от UNIX Epoch до отдаленного будущего.

Для сертификатов, используемых при аутентификации пользователя или хоста, публичный ключ CA должен быть доверенным sshd(8) или ssh(1). Дополнительные сведения см. в соответствующих страницах руководств.

СПИСКИ ОТЗЫВА КЛЮЧЕЙ

ssh-keygen может обслуживать OpenSSH формат списков отзыва ключей (Key Revocation Lists, KRL). Эти двоичные файлы указывают ключи или сертификаты для отзыва, с использованием компактного формата, занимая всего 1 бит на сертификат, если они отзываются по серийному номеру.

Списки KRL могут генерироваться с помощью флага -k. Эта опция считывает один или несколько файлов из командной строки и генерирует новый KRL. Файлы могут либо содержать спецификацию KRL (см. далее), либо публичные ключи, перечисленные по одному в строке. Простые публичные ключи отзываются путем перечисления их хеша или содержимого в KRL, а сертификаты отзываются по серийному номеру или идентификатору ключа key ID (если серийный номер равен нулю или недоступен).

Отзыв ключей с использованием спецификации KRL обеспечивает явный контроль над типами записей, используемых для отзыва ключей, и может использоваться для прямого отзыва сертификатов по серийному номеру или идентификатору ключа без наличия полного оригинального сертификата. Спецификация KRL состоит из строк, содержащих одну или несколько директив, за которой идет двоеточие и некоторая специфичная для директивы информации.

serial: serial_number[-serial_number]
      Отзывает сертификат с указанным серийным номером. Серийные номера это 64-битные значения, не включая 0, и могут быть выражены в десятичных, шестнадцатеричных или восьмеричных числах. Если два серифных номера указаны через дефис, то будет отменены сертификаты в диапазоне серифных номеров, включая границы диапазона. Ключ CA должен быть указан в командной строке ssh-keygen с помощью опции -s.

id: key_id Отзывает сертификат с указанной строкой идентификатора ключа (key ID string). Ключ CA должен быть указан в командной строке ssh-keygen с помощью опции -s.

key: public_key
      Отзывает указанный ключ. Если перечислен сертификат, то он отзывается как простой публичный ключ.

sha1: public_key
      Отзывает указанный ключ путем подключения хеша SHA1 в KRL.

sha256: public_key
      Отзывает указанный ключ путем подключения его хеша SHA256 в KRL. KRL-ы, которые отзывают ключи по хешу SHA256, не поддерживаются версиями OpenSSH до 7.9.

hash: fingerprint
      Отзывает ключ с помощью хеш отпечатка, полученный из сообщения лога аутентификации sshd(8) или флага ssh-keygen -l. Здесь поддерживаются только SHA256 идентификаторы, а результирующие KRL не поддерживаются версиями OpenSSH до 7.9.

Списки KRL могут обновляться с помощью опции -u в дополнение к опции -k. Когда указана эта опция, перечисленные в командной строке ключи объединяются в KRL путем добавления к тому, что уже там есть.

Также есть возможность по имеющемуся KRL проверить, отменяется ли определенный ключ (или ключи). Опция -Q будет запрашивать существующий KRL, проверяя каждый ключ, указанный в командной строке. Если любой ключ, перечисленный в командной строке, был отозван (или произошла ошибка, то на выходе ssh-keygen будет возвращен ненулевой статус. Нулевой статус выхода будет только в том случае, если ключ не был отозван.

РАЗРЕШЕННЫЕ ПОДПИСАНТЫ

При проверке сигнатур ssh-keygen использует простой список удостоверений и ключей, чтобы определить, исходит ли сигнатура из авторизованного источника. Этот файл "разрешенных подписантов" (allowed signers) использует формат, созданный по образцу формата авторизованных ключей (AUTHORIZED_KEYS FILE FORMAT) описанного в sshd(8). Каждая строка файла содержит следующие отделенные пробелом поля: участники (principals), опции, тип ключа (keytype), ключ (base64-encoded). Пустые строки, и строки начинающиеся на '#', игнорируются как комментарии.

Поле principals это список шаблонов (pattern-list, см. PATTERNS в ssh_config(5)), состоящий из одного или большего количества отделенных запятой шаблонов идентификаторов USER@DOMAIN, принимаемых для подписи. При проверке идентификатор, представленный с помощью опции -I, должен совпасть с шаблоном principals, чтобы соответствующий ключ считался допустимым для верификации.

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

cert-authority
      Показывает, что этот ключ принимается как центр сертификации (certificate authority, CA), и что сертификаты, подписанные этим CA, могут быть приняты для верификации.

namespaces=namespace-list
      Указывает пространства имен pattern-list, которые принимаются для этого ключа. Если эта опция присутствует, то пространство имен сигнатуры встроенное в объект сигнатуры и предоставленное в командной строке верификации, должно соответствовать указанному списку, прежде чем ключ будет считаться допустимым.

valid-after=timestamp
      Показывает, что ключ допустим для использования в указанную метку времени или после неё, что может быть датой в формате YYYYMMDD или временем в формате YYYYMMDDHHMM[SS].

valid-before=timestamp
      Показывает, что ключ допустим для использования в указанное время и до него.

При проверке сигнатур сертификатами ожидаемое имя участника (principal name) должно соответствовать как шаблону principals в файле разрешенных подписантов, так и principals, встроенных в сам сертификат.

Пример файла разрешенных подписантов:

   # Комментарии разрешены по символу # в начале строки.
   user1@example.com,user2@example.com ssh-rsa AAAAX1...
   # Центр сертификации (certificate authority), доверенный
   # для всех principals в домене.
   *@example.com cert-authority ssh-ed25519 AAAB4...
   # Ключ, который принимается только для подписи файла.
   user2@example.com namespaces="file" ssh-ed25519 AAA41...

ОКРУЖЕНИЕ (ENVIRONMENT)

SSH_SK_PROVIDER

      Указывает путь до библиотеки, которая будет использоваться при загрузке любых размещенных в аутентификаторе FIDO ключей, переназначая использование встроенной поддержки USB HID.

ФАЙЛЫ

~/.ssh/id_dsa
~/.ssh/id_ecdsa
~/.ssh/id_ecdsa_sk
~/.ssh/id_ed25519
~/.ssh/id_ed25519_sk
~/.ssh/id_rsa

      Содержат DSA, ECDSA, authenticator-hosted ECDSA, Ed25519, authenticator-hosted Ed25519 тили RSA authentication identity пользователя. Этот файл не должен быть доступен никому, кроме пользователя. Можно указать фразу пароля (passphrase) при генерации ключа; эта фраза пароля будет использоваться для шифрования приватной части этого файла с помощью 128-bit AES. Этот файл не используется утилитой ssh-keygen автоматически, но предлагается в качестве файла по умолчанию для приватного ключа. ssh(1) прочитает этот файл при попытке логина.

~/.ssh/id_dsa.pub
~/.ssh/id_ecdsa.pub
~/.ssh/id_ecdsa_sk.pub
~/.ssh/id_ed25519.pub
~/.ssh/id_ed25519_sk.pub
~/.ssh/id_rsa.pub

      Содержит DSA, ECDSA, authenticator-hosted ECDSA, Ed25519, authenticator-hosted Ed25519 или RSA публичный ключ для аутентификации. Содержимое этого файла должно быть добавлено к ~/.ssh/authorized_keys на всех машинах, где пользователь хочет залогиниться с помощью аутентификации по публичному ключу. Не требуется держать содержимое этого файла в секрете.

/etc/ssh/moduli

      Содержит группы Diffie-Hellman, используемые для DH-GEX. Формат этого файла описан в moduli(5).

СМ. ТАКЖЕ

ssh(1), ssh-add(1), ssh-agent(1), moduli(5), sshd(8)

Secure Shell (SSH) Public Key File Format, RFC 4716, 2006.

АВТОРЫ

OpenSSH является производным оригинального и свободного ssh 1.2.12, выпущенного Tatu Ylonen. Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, Theo de Raadt и Dug Song устранили многие баги, добавили новые функции и создали OpenSSH. Markus Friedl способствовал поддержке протоколов SSH версий 1.5 и 2.0.

 

 

Добавить комментарий


Защитный код
Обновить

Top of Page