Linux-doc Практика — критерий истины!

Алгоритм подключения к серверу

Клиент считывает параметры из конфигурационного файла:
~/.ssh/config (может отсутствовать)
/etc/ssh/ssh_config

ТРАНСПОРТ

Клиент подключается к серверу.

Клиент и сервер представляются друг другу

  • Cервер отсылает клиенту свой идентификатор (RFC 4253 4.2)
  • Клиент отсылает серверу свой идентификатор (RFC 4253 4.2)

Согласование применяемых алгоритмов обмена ключами, открытых ключей, шифрования, сжатия и хеширования.

  • Клиент отправляет серверу SSH_MSG_KEXINIT с перечислением предпочитаемых алгоритмов
  • Сервер отправляет клиенту SSH_MSG_KEXINIT с перечислением предпочитаемых алгоритмов

Вычисление общего секретного ключа, хеша обмена и идентификатора сессии.

  • Клиент запрапрашивает у сервера группу DH SSH_MSG_KEX_DH_GEX_REQUEST
  • Сервер берёт значения p и g из подходящего модуля с группой DH в файле /etc/ssh/moduli
  • Сервер передаёт клиенту простое число p и генератор g SSH_MSG_KEX_DH_GEX_GROUP
  • Клиент вычисляет значение e
  • Клиент отправляет на сервер значение e в пакете SSH_MSG_KEXDH_INIT
  • Сервер вычисляет значение f
  • Сервер вычисляет значение хеша обменаH (первый H является идентификатором сессии)
  • Сервер подписывает H получая подпись хеша обмена S = Sign(H, SKs)
  • Сервер отправляет клиенту f, открытый ключ хоста PKs и S в пакете SSH_MSG_KEXDH_REPLY

Клиент проверяет ключ хоста сервера

  • Клиент ищет в файле ~/.ssh/known_hosts (если он есть) строку, содержащую имя и ключ хоста и сравнивает ключ из файла с тем что прислал сервер

Клиент и сервер вычисляют общий секретный ключ и создают сессионные ключи для алгоритмов

Клиент и сервер информирую друг друга о завершении стадии обмена ключами отсылая пакет SSH_MSG_NEWKEYS.

С этого момента все пакеты шифруются

Запрос сервиса
Клиент запрашивает у сервера сервис отсылая сообщение SSH_MSG_SERVICE_REQUEST
Сервер поддерживает запрошенный сервис? ДА:НЕТ
Сервер отправляет сообщение SSH_MSG_SERVICE_ACCEPT

АУТЕНТИФИКАЦИЯ

Клиент запрашивает аутентификацию (SSH_MSG_USERAUTH_REQUEST, 50)
Сервер:- отклоняет запрос аутентификации (SSH_MSG_USERAUTH_FAILURE, 51)
или

  • аутентифицирует пользователя запрошенным методом
  • подтверждает успешную аутентификацию (SSH_MSG_USERAUTH_SUCCESS, 52)

Комментарии

Пока комментариев нет.