Страницы

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

вторник, 24 декабря 2019 г.

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

#linux #ssh



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




Итого


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




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


Ответы

Ответ 1



коротко и выборочно, касаясь только упомянутых файлов: сервер сообщает клиенту свой публичный 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), и много чего другого.

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

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