Как работает SSH
(продолжение предыдущего поста)
SSH (Secure Shell) обеспечивает безопасное удалённое управление операционной системой с использованием шифрования, обеспечивая защищённый обмен данными между клиентом и сервером благодаря:
- согласованию версий и алгоритмов;
- обмену ключами и расчёту общего сеансового ключа;
- аутентификации с использованием пар публичных и приватных ключей;
- шифрованию всех передаваемых данных с помощью сеансового ключа.
Процесс работы SSH можно разделить на несколько этапов, как показано на схеме:
1. Установление соединения (Connection Establishment)
- SSH-сервер слушает запросы на подключение (шаг 1: «Listens to connection requests»).
- SSH-клиент отправляет запрос на соединение (шаг 2: «Sends a connection request»).
- Устанавливается TCP-соединение между клиентом и сервером (шаг 3: «Establishes a TCP connection»).
2. Согласование версии (Version Negotiation)
- Сервер отправляет список поддерживаемых версий протокола SSH (шаг 4: «Sends the supported versions»).
- Клиент отвечает, указывая версию, которую будет использовать (шаг 5: «Responds with the version to be used»).
- Сервер проверяет, успешна ли negotiation версии (шаг 6: «Checks whether the version negotiation is successful»).
3. Согласование алгоритмов (Algorithm Negotiation)
- Клиент отправляет информацию о поддерживаемых алгоритмах шифрования (шаг 7: «Sends information about the supported algorithms»).
- Клиент и сервер согласовывают алгоритмы, которые будут использоваться для шифрования и аутентификации (шаг 8: «Negotiates various algorithms in sequence»).
4. Обмен ключами (Key Exchange)
- Сервер отправляет клиенту простые числа (G, P) и свой публичный ключ (y) (шаг 10: «Sends prime numbers G, P, and server public key y»).
- Клиент отправляет свой публичный ключ (x) (шаг 11: «Sends client public key x»).
5. Расчёт сеансового ключа (Session Key Calculation)
- Клиент вычисляет сеансовый ключ (K), используя:
- публичный ключ сервера (y);
- свой приватный ключ (a) (отмечено как шаг 12: «Calculates the session key K based on the server public key y and the client private key a»).
- Сервер вычисляет тот же сеансовый ключ (K), используя:
- публичный ключ клиента (x);
- свой приватный ключ (b) (отмечено как шаг 12: «Calculates the session key K based on the client public x and the server private key b»).
6. Аутентификация пользователя (User Authentication / Key Authentication)
- Клиент использует свой приватный ключ для подписи сообщений (шаг 13: «Uses the client private key for signature»).
- Клиент отправляет подписанные сообщения на сервер (шаг 14: «Sends signed messages»).
- Сервер использует публичный ключ клиента для проверки подписи (шаг 15: «Uses the client public key for signature verification»).
7. Запрос сеанса (Session Request)
- После успешной аутентификации клиент отправляет запрос на начало сеанса (шаг 16: «Sends a session request»).
- Сервер отвечает на запрос, подтверждая начало сеанса (шаг 17: «Responds to the session request»).
8. Взаимодействие в сеансе (Session Interaction)
- Клиент отправляет зашифрованный запрос команды на сервер (шаг 18: «Sends an encrypted command request»).
- Сервер расшифровывает запрос с помощью сеансового ключа (шаг 19: «Decrypts the command request using the session key»), выполняет команду и отправляет зашифрованный результат обратно клиенту (шаг 20: «Sends the encrypted execution result»).
- Клиент расшифровывает результат с помощью сеансового ключа и отображает его в терминале (шаг 21: «Uses the session key to decrypt the execution result and displays it on the terminal»).
Post #3545
1.5K
- 🔥 6
- 👍 4
- ❤🔥 3
- ❤ 1