Перейти к основному содержимому

SSH и HTTPS

Разработчику Инженеру

SSH и HTTPS

При работе с удалёнными серверами, сетевыми хранилищами и облачными сервисами возникает необходимость защиты передаваемых данных.

Протоколы SSH и HTTPS предоставляют механизмы шифрования и проверки подлинности. Эти технологии работают в разных средах и решают специфические задачи передачи информации между клиентом и сервером.

  • Протокол SSH используется преимущественно для доступа к командной строке систем администрирования.
  • Протокол HTTPS применяется для безопасной передачи данных по Всемирной паутине.

Оба протокола обеспечивают конфиденциальность, целостность и проверку подлинности, но используют разные подходы к настройке и выполнению запросов.


Что такое SSH и где его используют

Secure Shell (SSH) — это зашифрованный сетевой протокол прикладного уровня. Он обеспечивает защищённое соединение между клиентом и сервером. Основной задачей протокола становится защита данных от перехвата в процессе передачи.

Программы SSH позволяют получать удалённый доступ к операционным системам Linux, Unix, macOS и Windows. Сценарии использования включают управление конфигурациями серверов, копирование файлов и туннелирование трафика.

Администраторы систем используют SSH для удалённого выполнения команд. Система позволяет автоматизировать процессы установки ПО, обновления безопасности и мониторинга состояния инфраструктуры.


Сферы применения SSH

Сетевая технология находит применение в различных отраслях информационной деятельности. Основные направления использования протокола следующие:

  1. Администрирование серверов — установка и настройка программного обеспечения;
  2. Передача файлов — синхронизация содержимого дисков по протоколу SFTP;
  3. Туннелирование — создание защищённых каналов связи через публичные сети;
  4. Командное выполнение — запуск скриптов на удалённых машинах без участия пользователя.

Админы систем используют SSH ежедневно для поддержания работоспособности инфраструктуры. Технология становится стандартом де-факто для безопасного взаимодействия с удалёнными узлами.


Что такое HTTPS и где его используют

HyperText Transfer Protocol Secure (HTTPS) — это расширение стандартного протокола HTTP. Оно добавляет слой шифрования поверх транспортного протокола. Шифрование защищает данные от несанкционированного доступа при передаче между браузером и сервером.

Веб-браузеры автоматически инициируют соединения по протоколу HTTPS при посещении защищённых сайтов. Статус безопасности отображается адресной строкой браузера специальными значками замка. Серверы используют цифровые сертификаты для подтверждения своей принадлежности.

Протокол используется во всех современных веб-технологиях. Голландская компания Google рекомендует использование HTTPS для повышения позиций сайта в поисковых системах. Многие браузеры помечают незашифрованные сайты как небезопасные.


Сферы применения HTTPS

Защищённая версия передачи гипертекста применяется в следующих областях:

  1. Электронная коммерция — проведение платежей и сохранение платежных реквизитов;
  2. Банковские услуги — онлайн-банкинг и обработка финансовых транзакций;
  3. Социальные сети — обмен личными сообщениями и загрузка фото/видео контента;
  4. API сервисы — авторизация пользователей через токены и OAuth.

Веб-разработчики используют HTTPS для обеспечения безопасности пользовательских данных. Технология стала обязательным стандартом при разработке любых публичных приложений.


Порт 22 и порт 443

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

Порт 22 и его характеристики

Сервис SSH слушает трафик на порту 22. Администраторы могут изменить этот номер через конфигурационный файл. Изменение номера затрудняет автоматизированные атаки бот-сканеров.

Port: 2222
Protocol: 2
AddressFamily: any
UseDNS: yes
LoginGraceTime: 120
MaxAuthTries: 6

Порт 22 уязвим перед сканированием сетевых устройств. Злоумышленники активно проверяют наличие открытого порта для подключения. Уязвимость компенсируется использованием сложных ключей доступа.


Порт 443 и его особенности

HTTPS функционирует на порту 443. Этот порт используется большинством веб-серверов по умолчанию. Блокировка соединения на этом порту нарушает работу интернета.

Глобальные провайдеры исключают блокировку портов 80 и 443 из своих политик фильтрации. Организация не может использовать эти каналы для ограничения доступа к своим ресурсам. Стабильность работы сервиса гарантируется инфраструктурой глобальной сети.

Сравнение портов

ПараметрПорт 22 (SSH)Порт 443 (HTTPS)
НазначениеУправление серверамиВеб-серфинг
БлокировкаВозможна локальноПрактически невозможна
ТрафикОграниченныйМассовый
НастройкаТребуются праваПо умолчанию доступны

Аутентификация

Процесс идентификации пользователя проходит разными способами в зависимости от используемого протокола. Безопасность системы определяется качеством механизма проверки личности.

HTTPS подход к проверке личности

Программа запрашивает имя пользователя и пароль при каждом запросе. Данные отправляются в зашифрованном виде на сервер. Сервер сверяет их с базой допустимых пользователей.

Для упрощения процедуры администраторы используют токены персональных доступов. Токен хранится в системе управления паролями компьютера. Приложение автоматически подставляет токен при необходимости.

Персональный токен доступа — уникальный набор символов, выдаваемый системой управления доступом. Токен заменяет регулярный ввод пароля. Пользователь сохраняет токен в менеджере паролей.

Настройка требует минимальных усилий. Системный программист получает готовый инструмент для быстрой авторизации.


SSH подход к проверке личности

Программа использует криптографическую пару ключей для подтверждения доступа. Открытый ключ находится на сервере. Закрытый ключ сохраняется на компьютере пользователя.

Процесс генерации ключей включает создание случайной последовательности битов. Длина ключа определяет уровень сложности взлома. Современные алгоритмы используют длину от 4096 бит.

Генерация ключей происходит через консольную команду. Утилита создает два файла: приватный и публичный. Приватный файл нельзя никому показывать. Публичный файл загружают на сервер.

Настройка требует глубокого понимания принципов шифрования. Администратор должен изучить документацию платформы перед применением.


Производительность и время выполнения соединений

Скорость обмена данными зависит от архитектуры протокола и количества служебных запросов. Общее время операции складывается из времени установления соединения и скорости передачи данных.

Анализ скорости протоколов

Исследования показывают, что SSH выполняет команды быстрее аналогов. Разница составляет примерно 38 процентов в пользу протокола SSH. Это обуславливается архитектурными особенностями каждой технологии.

Широкие преимущества объясняются следующими факторами:

  1. Легковесный дизайн протокола SSH;
  2. Минимальное количество служебных пакетов;
  3. Поддержка постоянных открытых соединений.

Протокол HTTPS требует больше ресурсов для каждого отдельного запроса. Каждый запрос несет служебную информацию для обеспечения безопасности канала. Дополнительный вес данных увеличивает нагрузку на сеть.


Постоянные соединения против разовых

Соединение SSH остается открытым долгое время. Клиент отправляет множество команд через один туннель. Это снижает накладные расходы на повторную установку связи.

Протокол HTTPS устанавливает новое соединение для каждого действия. Браузер закрывает связь после получения ответа сервера. При следующем запросе запускается новый процесс аутентификации.

Примеры запросов

Ниже представлены примеры текстового формата запросов для обеих технологий. Они демонстрируют разницу в структуре взаимодействия.

Пример SSH запроса

user@host$ ssh user@example.com
Last login: Sun Mar 10 14:30:00 2026
Welcome to Ubuntu Server LTS
user@example.com:~$ ls -la

Пример HTTPS запроса

POST /api/token HTTP/1.1
Host: api.example.com
Content-Type: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

{
"username": "developer",
"password": "secure_password_123"
}
HTTP/1.1 200 OK
{"access_token": "...", "expires_in": 3600}

Работа в среде операционной системы

Операционная система предоставляет инструменты для хранения учётных данных. Диспетчер учётных записей Windows хранит логины и пароли пользователей.

Windows Credential Manager

Менеджер учитывает записи для разных типов сетевых подключений. Администраторы добавляют новые записи вручную через панель управления. Система шифрует сохранённые данные ключами защиты профиля.

Добавление записи в менеджер

Выполните следующие действия для настройки автоввода паролей в Git.

Set-Location C:\Users\Username\.gitconfig

Файл конфигурации содержит параметры для работы с удалённым репозиторием. Строка credential указывает на использование менеджера Windows. Менеджер запоминает credentials после первого входа.

Пошаговая инструкция:

  1. Откройте Панель управления Windows;
  2. Выберите раздел Пароли (Credential Manager);
  3. Нажмите кнопку Добавить запись интернет-учётных данных;
  4. Введите адрес сервера в качестве целевого адреса;
  5. Сохраните логин и токен доступа;
  6. Вернитесь к консоли для тестирования изменения.

Настройка Git для HTTPS

GitHub Desktop использует именно SSH. Рассмотрим на его примере, как его переключить.

  1. Откройте GitHub Desktop.
  2. В верхнем меню выберите File (Файл) → Options (Параметры) (на Windows).
  3. Перейдите в раздел Advanced (Дополнительно).
  4. Найдите опцию "Use system OpenSSH (recommended)".
  5. Снимите эту галочку.
  6. Нажмите Save (Сохранить).

После этого GitHub Desktop будет использовать свой встроенный SSH-клиент, который гораздо стабильнее работает с GitHub. Перезапустите GitHub Desktop. Если с выключенной галочкой OpenSSH попытаться сделать fetch или отправить коммит, можно получить сообщение:

Authentication failed. Some common reasons include:

- You are not logged in to your account: see File > Options.
- You may need to log out and log back in to refresh your token.
- You do not have permission to access this repository.
- The repository is archived on GitHub. Check the repository settings to confirm you are still permitted to push commits.
- If you use SSH authentication, check that your key is added to the ssh-agent and associated with your account.
- If you use SSH authentication, ensure the host key verification passes for your repository hosting service.
- If you used username / password authentication, you might need to use a Personal Access Token instead of your account password. Check the documentation of your repository hosting service.

Это нормально. Теперь нужно переключить протокол с SSH на HTTPS.

Выполните эти команды в терминале:

git remote -v

Так вы увидите текущий remote URL. Если там git@github.com:... (SSH), меняем на HTTPS:

git remote set-url origin https://github.com/ваш_репозиторий.git

Для примера, вот так выглядит SSH-версия адреса:

git@github.com:Ваш_никнейм/ваш_репозиторий.git

А вот так - HTTPS:

https://github.com/Ваш_никнейм/ваш_репозиторий.git

Для работы с HTTPS нужно устанавливать Personal Access Token (личный токен доступа). Для этого:

  1. Перейдите на GitHub, нажмите на своё фото в правом верхнем углу GitHub → Settings.
  2. В самом низу бокового меню выберите Developer settings → Personal access tokens → Tokens (classic).
  3. Нажмите Generate new token → Generate new token (classic).
  4. Придумайте понятное имя, например, My Deploy Script.
  5. В разделе "Scopes" (права доступа) поставьте галочку repo (это даст токену полный доступ к вашим приватным и публичным репозиториям).
  6. Нажмите Generate token и обязательно скопируйте полученный токен (он похож на ghp_...). GitHub покажет его только один раз.
  7. Сохраните токен в системе Windows, чтобы не вводить постоянно - откройте Панель управления → Диспетчер учетных данных (Credential Manager).
  8. Выберите Учетные данные Windows (Windows Credentials).
  9. Нажмите Добавить универсальные учетные данные (Add a generic credential).
  10. В поле Интернет-адрес или сетевой адрес введите: git:https://github.com
  11. В поле Имя пользователя введите: ваш логин на GitHub
  12. В поле Пароль вставьте скопированный токен.
  13. Нажмите "ОК".

Теперь Git просто возьмет имя пользователя и токен из "Диспетчера учетных данных" Windows и отправит всё на GitHub. Вам больше никогда не придется вводить ни пароль, ни пассфрейз, ни код подтверждения при каждом запуске.

После этого в GitHub Desktop нажмите Fetch origin — он заработает, потому что теперь использует не SSH, а HTTPS-аутентификацию (ту, через которую вы логинились в приложении).

Проверьте версию установленного клиента управления версиями. Установите параметр credential helper на уровень system. Компьютер будет автоматически подставлять токен при каждом обращении.

git config --global credential.helper wincred

Смена метода аутентификации на SSH требует добавления публичного ключа в профиль пользователя. Команда ssh-keygen создаёт файлы ключей. Файл id_rsa.pub копируют в настройки аккаунта.

cat ~/.ssh/id_rsa.pub

Копированный текст вставляют в раздел SSH Keys личного кабинета GitHub или GitLab. После этого работа переходит на протокол SSH.


Использование в веб-запросах

Программы используют HTTPS для отправки данных на сторонние сайты. Библиотеки обработки ответов анализируют ответы сервера для определения статуса.

Библиотека Python Requests поддерживает автоматическую обработку сертификатов. Приложение принимает сертификат по умолчанию из хранилища системы. Пользователь может указать путь к своему сертификату.

import requests

response = requests.get('https://api.example.com/data')
data = response.json()
print(data)

Приложения на C# используют HttpClient для создания защищённых соединений. Класс автоматически добавляет необходимые заголовки безопасности.

using System.Net.Http;
using System.Threading.Tasks;

public async Task GetDataAsync()
{
var client = new HttpClient();
var result = await client.GetAsync("https://api.example.com");
var content = await result.Content.ReadAsStringAsync();
}

Особенности многофакторной аутентификации

Многофакторная аутентификация подразумевает использование двух независимых методов проверки личности. Первый фактор — пароль. Второй фактор — одноразовый код с мобильного приложения.

Протокол HTTPS поддерживает все виды современных схем защиты. Пользователи проходят проверку через SMS, email или приложение-генератор кодов.

Многофакторная схема обеспечивает защиту при компрометации пароля. Вредитель не получит доступ без второго фактора.

SSH работает со статическими ключами доступа. Ключи генерируются один раз и хранятся постоянно. Система не предусматривает второй фактор проверки личности при использовании ключа.

Протокол SSH ограничен базовым уровнем безопасности ключа. Для расширения функционала используются внешние агенты аутентификации. Программы внедряются в систему администрирования как дополнительная компонента.