Назад |
Перейти на главную страницу
Последовательность аутентификации SSH и ключевые файлы: объяснение
В качестве фона для устранения различных проблем с использованием SSH и rsync с помощью пар ключей я хотел получить прямой обзор последовательности событий, происходящих во время аутентификации SSH, и того, как каждый из нескольких файлов клиента и хоста играет свою роль.
Google нашел много объяснений на детальном уровне, либо с узким охватом, либо с большим объемом, загроможденным этими деталями. Не говоря уже о множестве неверных или запутанных объяснений и сообщений на форуме.
В итоге я создал пару диаграмм, чтобы прояснить две вещи:
- Какие файлы и действия задействованы при подготовке к SSH-коммуникации с использованием ключей
- Что эти файлы делают в процессе установления соединения.
Я опубликую их в ответе ниже.
В следующем ответе объясняются файлы, необходимые для подготовки к аутентификации ssh с использованием пар открытого и закрытого ключей («Инфраструктура открытых ключей» или «PKI»), и то, как эти файлы используются во время фактического сеанса ssh. Некоторые особенности здесь используют имена и каталоги, которые применимы к Linux, но принципы применимы ко всем платформам, которые используют программы и файлы параллельно с ними. Основные интересные особенности:
- Пользовательская машина
- Пара ключей пользователя: Общедоступные и частные, которые пользователь на стороне клиента должен создать с помощью ssh-keygen, создавая файлы с такими именами, как:
- ~ / .ssh /id_rsa (частный) и
- ~ / .ssh /id_rsa.pub (общедоступный)
- В процессе подготовки необходимо передать на прием authorized_keys файл
- ~ / .ssh /known_hosts
- который получает открытый ключ от сервера, если пользователь принимает его при первом входе в систему.
- Хост (сервер) машина
- Пара ключей хоста: Государственное и частное
- автоматически создаются в какой-то момент, например, при установке openssh на сервере. Типичные названия:
- / и т. д. / ssh /ssh_host_rsa_key (частный)
- / и т. д. / ssh /ssh_host_rsa_key.pub (общедоступный)
- host предлагает открытый ключ клиентскому пользователю в первый раз, когда клиентский пользователь пытается подключиться к ssh. Клиент сохранит ключ хоста в known_hosts
- ~ / .ssh /authorized_keys
- При подготовке должен быть предоставлен открытый ключ каждого пользователя, который будет входить в систему.
- Цепочка событий в реальном сеансе SSH (или rsync), показывая, как задействованы файлы.
(Обратите внимание, что существует два разных общих алгоритма подписи, RSA и DSA, поэтому, когда в этом обсуждении используется 'rsa', вместо этого может появиться строка 'dsa'.)
Конфигурация / подготовка
Подключение и использование SSH
Надеюсь, эти диаграммы будут вам полезны.