Утилита ssh-keygen#
ssh-keygen – это утилита, с помощью которой можно создавать и преобразовывать ключи аутентификации для ssh и управлять ими. Утилита создает RSA-ключи для использования с SSH-протоколом версии 1 и ключи RSA или DSA для использования с SSH-протоколом версии 2. При вызове без аргументов ssh-keygen по умолчанию сгенерирует RSA-ключ для использования в соединениях по протоколу SSH версии 2.
Чаще всего данная утилита запускается пользователем один раз для создания ключа аутентификации в ~/.ssh/identity, ~/.ssh/id_dsa или ~/.ssh/id_rsa. Пользователь с административными полномочиями может использовать ее для генерации ключей хоста в /etc/rc.
Утилита генерирует ключ и запрашивает файл для хранения закрытого ключа. Открытый ключ хранится в файле с тем же именем, но с добавлением .pub. Также происходит запрос парольной фразы. Она может быть пустой (ключи хоста должны иметь пустую парольную фразу), или ей может стать строка произвольной длины. Парольная фраза аналогична паролю, за исключением того, что она может состоять из нескольких слов, знаков препинания, цифр, пробелов или набора символов. Если парольная фраза утеряна или забыта, необходимо сгенерировать новый ключ и скопировать соответствующий открытый ключ на другие машины.
Синтаксис утилиты:
ssh-keygen <options>
Где <options> - опции.
Часто используемые опции утилиты представлены в таблице ниже.
Опция |
Описание |
|---|---|
|
Создание всех типов ключей хоста по умолчанию ( |
|
Указание количества используемых раундов KDF (функция формирования ключа, в настоящее время |
|
Указание числа бит |
|
Изменение комментария в файлах закрытого и открытого ключей |
|
Определение алгоритма хеширования |
|
Установка имени файла |
|
Создание сертификата хоста вместо сертификата пользователя |
|
Раскрытие отпечатка открытого ключа из указанного файла |
|
Определение типа формата при создании ключа |
|
Указание одного или нескольких участников (имен пользователей или хостов), которые будут включены в сертификат при подписании ключа. Список участников должен разделяться запятыми |
|
Ввод новой парольной фразы |
|
Изменение парольной фразы файла закрытого ключа вместо создания нового закрытого ключа |
|
Удаление всех ключей, относящихся к указанному хосту, из файла |
|
Подпись открытого ключа при помощи ключа CA |
|
Определение типа ключа при создании. Возможные значения: |
|
Считывание закрытого файла формата OpenSSH и вывод открытого ключа в стандартный вывод |
Примеры использования#
Для генерации ключа в интерактивном режиме используйте команду:
ssh-keygenДля генерации ключа
ed25519с помощью32раундов функции получения ключа и его последующим сохранением в определенном файле используйте команду:ssh-keygen -t ed25519 -a 32 -f ~/.ssh/<filename>В результате выполнения команды в файл
<filename>сохранится сгенерированный ключ.Для создания RSA-ключа
4096бит воспользуйтесь командой:ssh-keygen -t rsa -b 4096В результате выполнения команды создастся ключ
4096бит.Для удаления ключей хоста из файла
known_hostsвоспользуйтесь командой:ssh-keygen -R <remote_host>В результате выполнения команды из хоста
<remote_host>удалятся ключи. Рекомендуется в случае, когда у хоста есть новый ключ SSH.Для получения отпечатка ключа в MD5 Hex из указанного файла используйте команду:
ssh-keygen -l -E md5 -f ~/.ssh/<filename>В результате выполнения команды из файла
<filename>получится отпечаток ключа.Для изменения пароля ключа и сохранения его в определенном файле, введите команду:
ssh-keygen -p -f ~/.ssh/<filename>В результате выполнения команды в файл
<filename>сохранится пароль ключа.Для изменения формата ключа (в примере команда с OPENSSH на PEM) используйте команду:
ssh-keygen -p -N "" -m PEM -f ~/.ssh/OpenSSH_private_keyФайл при выполнении команды перезапишется.
Для получения открытого ключа из секретного ключа воспользуйтесь командой:
ssh-keygen -y -f ~/.ssh/OpenSSH_private_key