Summary
- RFC 4251 описывает локальную запись пары «имя сервера — открытый ключ»: при последующих подключениях клиент сравнивает предъявленный ключ с этой записью.
- OpenSSH хранит такие записи в
known_hosts. Он может спрашивать о новом ключе и отказывать при изменении ключа знакомого сервера; уже проверенный сервер способен заранее сообщить дополнительные ключи.
В ходе обмена ключами SSH сервер предъявляет ключ хоста. Клиенту надо связать его с машиной, к которой пользователь собирался подключиться. RFC 4251, опубликованный в январе 2006 года, предлагает две модели: локальную базу соответствий имён и ключей либо доверенный центр сертификации. Первая обходится без центральной картотеки. Но первая запись в собственной картотеке становится важным решением.
В стандарте приведён практический порядок: принять ключ при первом контакте, сохранить его и сверять при следующих. Появляется машинная память. Если кто-то перехватит самое первое знакомство, он может подсунуть свой ключ и попасть в эту память. Поэтому RFC допускает проверку отпечатка по отдельному каналу связи. Когда подлинный ключ уже записан, другому ключу сложнее незаметно сыграть роль того же сервера.
У OpenSSH картотека лежит в ~/.ssh/known_hosts. Руководство OpenBSD по ssh(1) объясняет хранение ключей известных хостов и заметное предупреждение при их изменении. Такое предупреждение не устанавливает виновника. Сервер могли переустановить, его ключ могли сменить по плану; возможна и подмена. Но различие между вчерашней записью и сегодняшним предъявлением уже нельзя выдать за обычный вход.
В руководстве ssh_config(5) описаны разные правила знакомства. StrictHostKeyChecking=ask просит подтвердить новый ключ и отказывается подключаться при изменении ключа известного хоста. accept-new автоматически заносит новичков, но тоже отвергает изменённые ключи. yes требует предварительно добавить новые ключи вручную. Скорость первого знакомства меняется; право старой записи на возражение остаётся.
Нормальную замену ключа можно провести без неожиданного стука в дверь. UpdateHostKeys позволяет серверу, уже прошедшему проверку, объявить дополнительные ключи. Клиент узнаёт будущий ключ, пока старый ещё подтверждает собеседника. Новый знакомый приходит с человеком, которого картотека узнаёт.
Утилита ssh-keyscan собирает открытые ключи в формате для known_hosts. Её собственное руководство предупреждает: сбор не подтверждает, кому они принадлежат; сетевой посредник может предоставить свои. Быстро заполненная картотека не исправит ложную первую запись. Сила механизма — в способности удержать правильную историю и заметить её переписывание.
Обзор для участников
Подробный контекст профиля
Войдите с подходящим уровнем подписки, чтобы открыть полный обзор и примечания к источникам.
Только для Стратегического сообщества
Стратегическое сообщество
Открыто всем читателям. Вступите и войдите, чтобы открыть обзоры профилей.
Вступить в Стратегическое сообществоТолько для Альянса лидеров
Альянс лидеров
Для проверенных владельцев IP-активов и руководителей. Войдите, чтобы открыть обзоры Альянса.
Вступить в Альянс лидеров





