Назад | Перейти на главную страницу

Последовательность аутентификации SSH и ключевые файлы: объяснение

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

Google нашел много объяснений на детальном уровне, либо с узким охватом, либо с большим объемом, загроможденным этими деталями. Не говоря уже о множестве неверных или запутанных объяснений и сообщений на форуме.

В итоге я создал пару диаграмм, чтобы прояснить две вещи:

Я опубликую их в ответе ниже.

В следующем ответе объясняются файлы, необходимые для подготовки к аутентификации 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

Надеюсь, эти диаграммы будут вам полезны.