ssh-keygen создает, обслуживает и преобразует ключи аутентификации для ssh(1). ssh-keygen может создавать RSA-ключи для использования с протоколом SSH версии 1 и DSA- или RSA-ключи для использования с протоколом SSH версии 2. Тип создаваемого ключа определяется при помощи опции -t.
Обычно каждый пользователь, желающий использовать SSH с RSA или DSA аутентификацией, запускает его единожды для создания аутентификационного ключа в $HOME/.ssh/identity, $HOME/.ssh/id_dsa или $HOME/.ssh/id_rsa. Дополнительно, системный администратор может использовать его для создания ключей машины, как это видно из /etc/rc.
Обычно эта программа генерирует ключи и спрашивает название файла в котором надо сохранить приватный ключ. Публичный ключ будет сохранен в файле с тем же именем, только к нему будет добавлено расширение ".pub". Программа также спросит у вас ключевую фразу. Ключевая фраза может быть пустой, это означает, что ключевая фраза не используется (ключ машины должен иметь пустую ключевую фразу), или это может быть строка произвольной длины. Ключевая фраза схожа с паролем, за исключением того, что ключевая фраза может состоять из набора слов, знаков препинания, цифр, пробелов или любого набора символов, какой вы пожелаете. Хорошими считаются ключевые фразы из 10-30 символов, не являющиеся простыми предложениями или легко угадываемыми (английская проза имеет только 1-2 бита энтропии на символ и обеспечивает очень плохие ключевые фразы) и содержать чередование букв, цифр и не буквенно-цифровых, набранных в верхнем и нижнем регистре, знаков. Ключевая фраза может быть позднее изменена при помощи опции -p.
Не существует возможности восстановить утерянную ключевую фразу. Если ключевая фраза утеряна или забыта, вы должны создать новый ключ и скопировать соответствующий публичный ключ на другие машины.
Для RSA1-ключей в файле ключа имеется поле комментария, который служит только для удобства пользователя, чтобы было проще идентифицировать ключ. Комментарий может вам сообщить для чего этот ключ или чем он полезен. Комментарий инициализируется при создании для "user@host", но может быть изменен при помощи опции -c.
После генерации ключа будут приведены инструкции куда его надо поместить для активации.
Используемые опции:
-bbits
Определяет число бит в ключе при его создании. Минимум это 512 бит. Как правило, 2048 бит считается достаточным. По умолчанию используется 2048 бит.
-c
Запрашивает изменение комментария в файлах приватных и публичных ключей. Операция поддерживается только для RSA1-ключей. Программа предложит указать файл содержащей приватный ключ, спросит ключевое слово, если таковое имеется, и новый комментарий.
-е
Эта опция позволяет прочитать приватный или публичный OpenSSH-файл ключа и распечатать его в "SECSH Public Key File Format" в стандартный вывод. Также, данная опция позволяет экспортировать ключи для использования с некоторыми коммерческими реализациями SSH.
-ffilename
Определяет имя файла для файла ключа.
-i
Эта опция считывает не зашифрованный SSH2-совместимый приватный (или публичный) файл ключа и распечатывает OpenSSH-совместимый приватный (или публичный) ключ в стандартный вывод. Также, ssh-keygen считывает "SECSH Public Key File Format". Данная опция позволяет импортировать ключи из некоторых коммерческих реализаций SSH.
-l
Показывает распечатку указанного приватного или публичного ключа. Также поддерживаются приватные RSA1-ключи. Для RSA- и DSA-ключей ssh-keygen предпримет попытку найти соответствующие публичные ключи и их отпечатки.
-p
Запрашивает изменение ключевой фразы приватного ключа вместо создания нового приватного ключа. Программа предложит указать имя файла содержащего приватный ключ, старую ключевую фразу и, дважды, новую ключевую фразу.
-q
Тихий ssh-keygen. Используется в работе /etc/rc при создании нового ключа.
-y
Эта опция читает приватный OpenSSH-формат файла и печатает публичный ключ OpenSSH в стандартный вывод.
-ttype
Определяет тип создаваемого ключа. Допустимыми являются значения "rsa1", для протокола версии 1, и "rsa1" или "dsa", для протокола версии 2.
-В
Этот параметр отображает "bubblebabble" дайджест заданного файла публичного или приватного ключа.
-Ccomment
Обеспечивает ввод нового комментария.
-Dreader
Копировать сохранённый публичный RSA-ключ со smartcard в устройстве reader.
-Nnew_passphrase
Обеспечивает ввод новой ключевой фразы.
-Ppassphrase
Обеспечивает ввод (старой) ключевой фразы.
-Dreader
Копировать публичный RSA-ключ на smartcard в устройстве reader.
ФАЙЛЫ
$HOME/.ssh/identity
Содержит идентификацию для RSA-аутентификации пользователя по протоколу версии 1.
Этот файл должен быть доступен для чтения только владельцу. Этого можно добиться путем указания ключевой фразы при создании ключа; эта ключевая фраза будет использована для шифрования приватной части этого файла с использованием 3DES. Этот файл не доступен для ssh-keygen автоматически, но подразумевается, что это файл по умолчанию для приватного ключа. ssh(1) будет считывать данные из этого файла, если будет предпринята попытка входа в систему.
$HOME/.ssh/identity.pub
Содержит публичный ключ для RSA-аутентификации по протоколу версии 1. Содержимое этого файла должно быть добавлено к $HOME/.ssh/authorized_keys на всех машинах, где вы желаете иметь возможность входа в систему с использованием RSA-аутентификации. Нет никакой необходимости хранить содержимое этого файла в тайне.
$HOME/.ssh/id_dsa
Содержит идентификацию для DSA-аутентификации пользователя по протоколу версии 2.
Этот файл должен быть доступен для чтения только владельцу. Этого можно добиться путем указания ключевой фразы при создании ключа; эта ключевая фраза будет использована для шифрования приватной части этого файла с использованием 3DES. Этот файл не доступен для ssh-keygen автоматически, но подразумевается, что это файл по умолчанию для приватного ключа. ssh(1) будет считывать данные из этого файла, если будет предпринята попытка входа в систему.
$HOME/.ssh/id_dsa.pub
Содержит публичный ключ для DSA-аутентификации по протоколу версии 2. Содержимое этого файла должно быть добавлено к $HOME/.ssh/authorized_keys на всех машинах, где вы желаете иметь возможность входа в систему с использованием аутентификации с публичным ключем. Нет никакой необходимости хранить содержимое этого файла в тайне.
$HOME/.ssh/id_rsa
Содержит идентификацию для RSA-аутентификации пользователя по протоколу версии 2.
Этот файл должен быть доступен для чтения только владельцу. Этого можно добиться путем указания ключевой фразы при создании ключа; эта ключевая фраза будет использована для шифрования приватной части этого файла с использованием 3DES. Этот файл не доступен для ssh-keygen автоматически, но подразумевается, что это файл по умолчанию для приватного ключа. ssh(1) будет считывать данные из этого файла, если будет предпринята попытка входа в систему.
$HOME/.ssh/id_rsa.pub
Содержит публичный ключ для RSA-аутентификации по протоколу версии 2. Содержимое этого файла должно быть добавлено к $HOME/.ssh/authorized_keys на всех машинах, где вы желаете иметь возможность входа в систему с использованием аутентификации с публичным ключем. Нет никакой необходимости хранить содержимое этого файла в тайне.
АВТОРЫ
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.
ssh(1), ssh-add(1), ssh-agent(1), sshd(8)
J. Galbraith, and R. Thayer, SECSH Public Key File Format, draft-ietf-secsh-publickeyfile-01.txt, March 2001, work in progress material.