Какие закрытые ключи проверяются ssh без настройки?

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

Так вот: у меня есть несколько ключей ssh ​​в моей директории .ssh. Для некоторых пультов разные ключи.

Сейчас я не настроил в .ssh/config, какой ключ использовать для какого хоста, и не добавил их к агенту вручную, о чем здесь уже упоминалось в некоторых вопросах. Я только что создал ключи с помощью ssh-keygen, и он работает.

Теперь я хотел бы знать, кто за это отвечает и какие ключи пробуются автоматически? У меня в голове что-то говорит, что пять ключей автоматически проверяются на совместимость, но я не могу найти, где я нашел эту информацию.

ssh-keygen автоматически добавляет эти ключи к агенту? Или ssh ищет любой соответствующий ключ по умолчанию?

6
задан 19 June 2012 в 19:31

3 ответа

Клиент ssh проверит все ваши ключи, пока не найдет тот, который соответствует.

Вот как это работает (это очень упрощено, до этого был сделан довольно сложный танец для шифрования всего этого):

  • Сервер создает токен аутентификации.
  • Токен зашифрован с использованием вашего открытого ключа на сервере.
  • Сервер отправляет зашифрованный токен клиенту.
  • Клиент пытается расшифровать токен, используя все известные закрытые ключи.
  • В случае успеха он отправит расшифрованный токен обратно на сервер.
  • Если токен совпадает, сервер впустит клиента.

Какие файлы являются ключами, зависит от клиента.

Для клиента Openssh (клиента по умолчанию Ubuntu), согласно его man-странице, файлы, которые должны быть закрытыми ключами, являются ./sshid_rsa, .ssh / id_dsa, .ssh / id_ecdsa, плюс те, которые указаны после -i флаг (он поддерживает несколько файлов) и те, которые объявлены в файле конфигурации.

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

$ ssh -v www.hostremoved.com
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
<...>
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/javier/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/javier/.ssh/id_dsa
debug1: Trying private key: /home/javier/.ssh/id_ecdsa
debug1: Next authentication method: password
<...>

Как вы можете видеть, он печатает все ключи, которые он пытается, он терпит неудачу все. Вы можете использовать это в своей системе, чтобы узнать, какие файлы использует ssh в вашей собственной системе.

Ниже вы можете увидеть выходные данные, если какой-либо существующий ключ найден и опробован.

debug1: Authentications that can continue: publickey,password
debug1: Offering RSA public key: user@xyz

user@xyz - это информация, приложенная к открытому ключу.


Если вам интересно, как ваш ssh-клиент находит ваши закрытые ключи, это не волшебство. Под Gnome (также xfce и KDE) есть специальный ssh-агент, который автоматически добавляет ключи в каталог .ssh, имеющие соответствующий открытый ключ с окончанием .pub.

Если у вас нет такого удобного ssh-агента, вам придется добавить свои закрытые ключи с помощью ssh-add key.

0
ответ дан 19 June 2012 в 19:31

Предполагая, что вы скопировали открытый ключ в файл authorized_keys на удаленном компьютере, клиент ssh проверит, какой закрытый ключ на локальном компьютере совпадает с открытым ключом на удаленном компьютере.

0
ответ дан 19 June 2012 в 19:31

Копировал/вставлял с ssh_config (5) в openssh-клиенте 1:5.3p1-3ubuntu7:

IdentityFile

Указывает файл, из которого читаются идентификационные данные аутентификации RSA или DSA пользователя. Значение по умолчанию является ~/.ssh/identity для версии протокола 1, и ~/.ssh/id_rsa и ~/.ssh/id_dsa для версии протокола 2. Кроме того, любые идентификационные данные, представленные агентом аутентификации, будут использоваться для аутентификации.

Имя файла может использовать синтаксис тильды для обращения к корневому каталогу пользователя или одному из следующих символов ESC: ‘%d’ (корневой каталог локального пользователя), ‘%u’ (имя локального пользователя), ‘%l’ (локальное имя хоста), ‘%h’ (удаленное имя хоста) или ‘%r’ (имя удаленного пользователя).

Возможно иметь несколько файлов идентификационных данных, указанных в конфигурационных файлах; все эти идентификационные данные попробуют в последовательности.

Нижняя строка является этим, зависит от версии протокола. Для версии 2 (скорее всего, в эти дни), id_rsa и id_dsa пробуют в том порядке согласно вышеупомянутому документу. Более новые версии могут включать другой тип ключей по умолчанию как id_ecdsa. Проверьте что страница справочника в свою версию для деталей.

1
ответ дан 19 June 2012 в 19:31

Другие вопросы по тегам:

Похожие вопросы: