Страницы

Поиск по вопросам

четверг, 29 ноября 2018 г.

Как поэтапно происходит SSH-аутентификация?

Сгенерировал RSA-ключи (ssh-keygen). Публичный ключ добавил на удалённый сервер (ssh-copy-id).

Итого
У нас локально есть два ключа: key, key.pub; и запись в ~/.ssh/known_hosts На удалённом сервере запись публичного ключа добавлена в ~/.ssh/authorized_keys

Как поэтапно происходит процесс аутентификации: кто-что-кому отправляет и кто-что-как проверяет?


Ответ

коротко и выборочно, касаясь только упомянутых файлов:
сервер сообщает клиенту свой публичный rsa-ключ (/etc/ssh/ssh_host_rsa_key.pub) клиент сверяет его с соответствующей строкой в ~/.ssh/known_hosts клиент сообщает серверу используемый публичный ключ key.pub (впрочем, если этот файл отсутствует, то всё необходимое можно извлечь из файла key — см. ниже) сервер сверяет его последовательно со всеми строками в ~/.ssh/authorized_keys

примечание.
У нас локально есть два ключа: key, key.pub
судя по названиям файлов, речь про один rsa-ключ, а не про два.
во втором файле, действительно, хранится только пара {e,n} (используя терминологию из примера в википедийной статье про rsa), а в первом, вообще-то, хранятся и e, и n, и d, т.е., формально говоря, не только секретный ключ, но и публичный в том числе. потому файл key.pub и легко восстановить, имея лишь файл key, а хранится пара {e,n} в отдельном файле, насколько я понимаю, лишь для удобства пользователя.

для иллюстрации, вот составные части файла key
$ openssl rsa -in key -text -noout | sed '/^ /d' Private-Key: (2048 bit) modulus: publicExponent: 65537 (0x10001) privateExponent: prime1: prime2: exponent1: exponent2: coefficient:
а вот составные части файла key.pub (ну, только сохранённого под именем key.pem в формате, понятном программе openssl):
$ openssl rsa -in key.pem -text -pubin -noout | sed '/^ /d' Public-Key: (2048 bit) Modulus: Exponent: 65537 (0x10001)
видно, что в файле key.pub, как и «полагается» для публичного ключа, присутствует два компонента: e (exponent) и n (modulus).
а в файле key, как в греции, «есть всё»: не только пара n (modulus) и d (насколько я понимаю различие в терминологии, это privateexponent), но и тот же e (publicexponent), и много чего другого.

Комментариев нет:

Отправить комментарий