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

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

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

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

  • Какие файлы и действия участвуют в подготовке к SSH-коммуникации с использованием ключей
  • Что эти файлы делают в процессе установления соединения.

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

1 ответ

В следующем ответе объясняются файлы, необходимые для подготовки к ssh-аутентификации с использованием пар открытого-закрытого ключей ("Инфраструктура открытых ключей" или "PKI"), и как эти файлы используются во время реального сеанса ssh. Некоторые особенности здесь используют имена и каталоги, которые применяются к linux, но принципы применяются ко всем платформам, которые используют программы и файлы, параллельные им. Основные особенности, представляющие интерес:

  • Пользовательская машина
    • Пара ключей пользователя: открытый и закрытый, который пользователь на стороне клиента должен создать с помощью ssh-keygen, создавая файлы с такими именами, как:
      • ~ /.ssh / id_rsa (личное) и
      • ~ /.ssh / id_rsa.pub (общедоступный)
      • При подготовке, должен быть передан в файл author_keys хоста
    • ~ /.ssh / known_hosts
      • который получает открытый ключ от сервера, если пользователь принимает его при первом входе в систему.
  • Хост (сервер) машина
    • Пара ключей хоста: публичный и приватный
      • автоматически создаются в какой-то момент, например, установка openssh на сервере. Типичные имена:
      • / etc / ssh / ssh_host_rsa_key (private)
      • / etc / ssh / ssh_host_rsa_key.pub (общедоступный)
      • host предлагает открытый ключ пользователю на стороне клиента в первый раз, когда пользователь на стороне клиента пытается соединиться с ssh. Клиент будет хранить ключ хоста в known_hosts
    • ~ /.ssh / authorized_keys
      • При подготовке должен быть предоставлен открытый ключ каждого пользователя, который будет входить в систему.
  • Последовательность событий в реальном сеансе SSH (или rsync), показывающая, как задействованы файлы.

(Обратите внимание, что есть два разных общих алгоритма подписи, RSA и DSA, поэтому там, где в этом обсуждении используется "rsa", вместо этого может появиться строка "dsa".)

Конфигурация / подготовка

SSH соединение и использование

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

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