Как ssh выбирает ключ для сервера?

Правильно ли я понимаю что ssh ключи закрытые хранятся все в одной файле ~/.ssh/id_rsa и там их может быть много?

Как именно тогда ssh понимаем по какому ключу к какому серверу подключится?


Ответы (3 шт):

Автор решения: DGDays

Если не ошибаюсь, то в ~/.ssh/id_rsa находится твой приватный ключ. То есть, по нему ты можешь подключаться к другим пк. Например, у тебя в папке лежит ~/.ssh/id_rsa.pub если ты его скопируешь и на другой машине в ~/.ssh/authorized_keys запишешь его, то с помощью команды ssh -i ~/.ssh/id_rsa ip сможешь законнектиться без пароля.

То есть, в этом файле хранится лишь твой приватный ключ, с помощью которого ты общаешься с другими пк по ssh

→ Ссылка
Автор решения: S.H.

я хочу дополнить ответ, который уже есть.

Вообще говоря, в папке %userprofile%/.ssh может находиться несколько публичных и несколько приватных ключей.

Но обратите внимание. Для того, чтобы при соединении с сервером по ssh работала авторизация по ключам - на сервер должен быть скопирован Ваш публичный ключ.

я бы предположил, что во время сеанаса связи с сервером сервер говорит "у меян вот такой публичный ключ для этого пользователя есть, ну ка, глянь, у тебя есть правильная приватная часть?" - и тогда уже ваш компьютер заходит в %userprofile%/.ssh, находит там публичную часть ключа, по ней находит приватную и проверяет, что публичный ключ - правильный.

На этом мои сообращения по заданному вопросу заканчиваются :-)

А теперь - просто такой интересный факт: в некоторых случаях публичная часть ключа не нужна. Её можно сгененриовать из приватной части. Правда, опять так, как мне кажется (и пусть меня поправят, если я не прав) в разных случаях из одной и той же приватнйо части может быть сгенерирована, вообще говоря, разная публичная часть.

Вот первая попавшаяся ссылка на эту тему:

"При использовании ssh-авторизации по ключам, иногда бывает так что вследствии перезаписывания или удаления, теряется публичная часть ключа - id_dsa.pub (или id_rsa.pub соответственно). Однако, имея в наличии приватную часть ключа, можна восстановить публичную, используя всего одну команду.

DSA:

    # ssh-keygen -y -f id_dsa > id_dsa.pub

RSA:

    # ssh-keygen -y -f id_rsa > id_rsa.pub
→ Ссылка
Автор решения: Stanislav Volodarskiy

Нет, вы понимаете неправильно. В одном файле хранится ровно один приватный ключ. Если вы хотите использовать несколько разных пар ключей, используйте для них разные имена.

ssh перебирает несколько имён файлов. Среди них есть и ~/.ssh/id_rsa. Выдержка из man ssh:

-i identity_file
     Selects a file from which the identity (private key) for
     public key authentication is read.  The default is ~/.ssh/identity
     for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa,
     ~/.ssh/id_ed25519 and ~/.ssh/id_rsa for protocol version 2.
     Identity files may also be specified on a per-host basis in the
     configuration file.  It is possible to have multiple -i options
     (and multiple identities specified in configuration files). ...

Создайте конфигурационный файл, чтобы для разных серверов использовать разные ключи. Обычно он лежит в ~/.ssh/config. Читайте man ssh_config.

→ Ссылка