4

Как ssh-agent понимает, какой ключ он должен использовать для какого удаленного сервера?

Я сталкивался с разными вопросами и постами, которые как-то затрагивают эту тему, но мне все еще неясно.

Я обнаружил, что если вы хотите использовать разные ключи ssh, вам нужно использовать опцию -i и указать путь к нужному ключу, или вы можете настроить файлы идентификации, которые определяют, какую пару ключей для какого хоста использовать.

Но значит ли это, что по умолчанию ssh-agent может использовать только одну пару ключей и будет пытаться использовать ее для всех удаленных серверов?

3 ответа3

3

Но значит ли это, что по умолчанию ssh-agent может использовать только одну пару ключей и будет пытаться использовать ее для всех удаленных серверов?

По умолчанию ssh-agent будет использовать все добавленные к нему ключи ко всем подключаемым серверам. Вы можете ограничить ключи с помощью ssh_config как и в другом ответе.

На ключах есть отпечатки пальцев, но на первом этапе аутентификации с открытым ключом открытые части просто проверяются по списку серверов, и, если они не совпадают, аутентификация пропускается (обычно для аутентификации по другому ключу или паролю).

1

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

Host github.com
    IdentityFile ~/.ssh/github.key
Host example.com
    IdentityFile ~/.ssh/example.key

Есть хороший учебник по этой функциональности здесь.

-2

«Ключ» (без каламбура) основан на отпечатке пальца, как указано в RFC4716. Как объяснено в справочной странице ssh:

When connecting to a server for the first time, a fingerprint of the
server's public key is presented to the user (unless the option
StrictHostKeyChecking has been disabled).  Fingerprints can be determined
using ssh-keygen(1):

           $ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key

If the fingerprint is already known, it can be matched and the key can be
accepted or rejected.

В двух словах ASCII здесь дается описание отпечатков пальцев в отношении того, какой ключ выбран / использован:

ssh-keygen yourfingerprint
you ssh --> server (stores your fingerprint)
you ssh --> millions of other servers
you ssh initial server --> server --> Have I seen this fingerprint before?

ADDED

Из-за того, что я нажал Enter слишком рано, отпечатки пальцев хранятся в:

~/.ssh/known_hosts

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .