Я играл с настройками шифрования OpenSSH (7.4p1-10 в Debian 9) и заметил, что когда я установил в sshd_config

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com

и иметь ключ хоста, сгенерированный с

ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -t ssh-ed25519

сервер жалуется:

debug3: list_hostkey_types: ssh-ed25519 key not permitted by HostkeyAlgorithms [preauth]


Интересно, что ssh-keygen -t принимает ssh-ed25519-cert-v01 в качестве параметра, но не может сгенерировать ключ. Какова цель этого алгоритма? Где я могу найти больше информации об этом?

# ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -N '' -t "ssh-ed25519-cert-v01@openssh.com"
Generating public/private ssh-ed25519-cert-v01@openssh.com key pair.
key_generate failed

1 ответ1

2

На странице руководства ssh-keygen есть раздел "Сертификаты".

Сертификаты OpenSSH концептуально аналогичны сертификатам X.509 (SSL/TLS) - клиент или сервер доверяют одному ключу, чтобы действовать в качестве центра сертификации, автоматически принимая открытые ключи всех серверов или пользователей, подписанные этим ключом. (В отличие от X.509, формат сертификата OpenSSH поддерживает только прямое доверие, а не транзитивное; не может быть "промежуточных" CA.)

Хотя 7.4 по ошибке принимает форматы сертификатов в -t , не имеет смысла генерировать их таким образом. Сначала вам нужно сгенерировать простую пару ключей (в настоящее время поддерживаются все типы), затем используйте ssh-keygen -s ... [-h|-u] ... чтобы подписать открытый ключ с парой ключей CA, которая выводит сертификат ,

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

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