Сгенерировал 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), и много чего другого.
Комментариев нет:
Отправить комментарий