🦊 SSH или HTTPS для Git: что из них использовать? |

🦊 SSH или HTTPS для Git: что из них использовать?

Статьи

Введение

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

Удаленные репозитории Git облегчают совместную работу над исходным кодом во время разработки программного обеспечения.

HTTPS и SSH — это два разных способа подключения к удаленному репозиторию GitHub через командную строку.

В этой статье вы узнаете о разнице между использованием SSH и HTTPS для Git и о том, как выбрать правильный метод аутентификации.

SSH или HTTPS для Git: в чем разница?

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

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

Метод аутентификации зависит от того, какой удаленный URL-адрес вы выбираете HTTPS или SSH при клонировании репозитория Git, как показано на рисунке ниже:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий

  1. XTLS

    HTTPS – это HTTP поверх TLS. А TLS как раз использует шифрование передаваемых данных на базе ассиметричных ключей. И ключи эти, в большинстве случаев, настроены на стороне сервера. В некоторых случаях, для аутентификации клиентов на веб-сервере, могут быть настроены клиентские асимметричные пары, и выпущенные для этих пар сертификаты. Да на фаерволе достаточно отсавить открытым 443 порт как и для всего веб-сервиса.
    Криптостойкость защифрованного канала между клиентом и сервером после TLS-handshake обеспечивается поддерживаемым набором криптоалгоритмов на сервере. Ну и если клиент в них умеет.

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

    В статье авто описывает разницу в аутентификации клиента на таких службах системы контроля версий как Github, GitLab и др. И разница между ними такая:

    Локальный репозиторий мы получаем клонированием удаленного с сервера.
    git clone https://github.com/repoX
    или
    gir clone git@github.com:repoX

    Передаваемые данные в обоих случаях зашифрованы ассиметричными алгоритмами.
    Но в случае работы по https сервер должен как-то аутентифицировать клиента. Мало подключиться к https эндпойнту – надо убедительно показать серверу кто ты есть. И поэтому после TLS-handshake – мы передаем серверу или токены или другие авторизационные данные. И наш коммит принимается или отклаоняется из-за неудачи авторизации.

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

    Ответить
    1. cryptoparty автор

      Спасибо за обширное дополнение

      Ответить