Вопрос связан с этим алгоритмом.
В общих чертах, аутентификация посредством ключей происходит следующим образом:
1)Клиент отсылает серверу имя пользователя (username) и свой публичный ключ. 2)Сервер проверяет в файле /home/username/.ssh/authorized_keys наличие присланного клиентом открытого ключа. Если открытый ключ найден, то сервер генерирует случайное число и шифрует его открытым ключом клиента, после чего результат отправляется клиенту. 3)Клиент расшифровывает сообщение своим приватным ключом и отправляет результат серверу. 4)Сервер проверяет полученный результат на совпадение с тем числом, которое он изначально зашифровал открытым ключом клиента, и в случае совпадения считает аутентификацию успешной.
Как и обещал пара вопросов:
-
Как ssh утилита «знает» какой публичный ключ (пункт 1.) отсылать на сервер? Если у меня в каталоге ~/.ssh несколько ключей?
-
Если в ~/.ssh лежит приватный ключ защищенный паролем и рядом нет публичного ключа, то как ssh определит публичный ключ из него(для отправки на сервер) не зная пароль?