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

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

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

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

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

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

3
задан 16 October 2018 в 02:57
1 ответ

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

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

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

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

SSH-соединение и использование enter image description here

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

5
ответ дан 3 December 2019 в 05:38

Теги

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