Что Такое SSH

Что Такое SSH

Что такое SSH

SSH, или Безопасная Оболочка, это протокол удаленного администрирования, который позволяет пользователю управлять и вносить изменения на его удаленный сервер через Интернет. Эта служба была создана в качестве замены не зашифрованному Telnet и использует криптографические техники, чтобы обеспечить, что всё сообщение между сервером и пользователем было зашифровано. SSH предоставляет механизм для авторизации удаленного пользователя, передавая команды клиента хосту и возвращая ответ обратно клиенту.

На рисунке ниже показано обычное окно SSH. Любой пользователь Linux или macOS может воспользоваться SSH напрямую из окна терминала. Пользователи Windows могут воспользоваться SSH-клиентом вроде Putty. Вы можете выполнять shell команды также, как если бы вы напрямую управляли удаленным компьютером.

SSH окно

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

Как работает SSH

Если вы используете Linux или Mac, тогда использование SSH для вас не составит особого труда. Если вы используете Windows, вам необходимо установить SSH-клиент для подключения. Самым популярным SSH-клиентом является PuTTy, о котором вы можете узнать подробнее здесь.

Для пользователей Mac и Linux, перейдите к вашей программе терминала и следуйте инструкциям ниже:

SSH команда состоит из 3 отдельных частей:

ssh {user}@{host}

Часть с SSH даст системе знать, что вы хотите открыть SSH соединение. {user} даст системе сведения об аккаунте к которому вы хотите подключиться. К примеру, вы захотите получить доступ в качестве root пользователя, который фактически является синонимом для администратора системы с полными правами на изменение любых данных в системе. {host} означает компьютер к которому вы хотите подключиться. Это может быть IP адрес или доменное имя (например www.домен.xyz).

Когда вы нажмёте Enter, вылезет окно с просьбой ввести пароль от запрошенного аккаунта. Когда вы его введёте не последует никаких сообщений, однако, ваш пароль будет передан. После того, как вы закончите ввод пароля, нажмите кнопку Enter дважды вновь. Если ваш пароль правильный, то вас встретит окно терминала удаленного управления.

Если вы хотите узнать больше об SSH командах, посетите данное руководство.

Объяснение разных техник шифрования

Теперь, когда мы получили немного знаний о том, что такое SSH, нам следует перейти к техниками шифрования. Главным преимуществом SSH над его предшественниками является использование шифрования для защиты передачи данных между хостом и клиентом. Хост — это удаленный сервер к которому вы хотите получить доступ, тогда как клиент — это компьютер с которого вы пытаетесь получить доступ к хосту. Существует три различных технологий шифрования, используемых SSH:

  1. Симметричное шифрование
  2. Асимметричное шифрование
  3. Хеширование

Симметричное шифрование

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

Симметричное шифрование Что такое SSH

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

Симметричные ключи используются для шифрования всего сообщения в течение SSH сессии. И клиент, и сервер получают ключ согласованным методом, и данный ключ никогда не разглашается третьим лицам. Процесс создания симметричного ключа осуществляется при помощи алгоритма обмена ключами. Что делает этот способ шифрования в некотором смысле безопасным, так это то, что ключ никогда не передаётся от клиента к хосту. Наоборот, оба компьютера делят части публичной информации и используют её для вычисления ключа. Даже если другая машина сможет перехватить информацию, она не сможет вычислить ключ, потому что алгоритм обмена ключом будет неизвестен.

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

Существует разные шифры симметричного шифрования, включая AES (Advanced Encryption Standard), CAST128, Blowfish и т.д. Перед установкой защищённого соединения, клиет и хост решают какой из шифров использовать, создавая список поддерживаемых шифров в порядке их предпочтительности. Самый предпочтительный шифр из списка клиента, который присутствует в списке хоста будет использоваться в качестве двунаправленного шифра.

К примеру, если две машины Ubuntu 14.04 LTS сообщаются друг с другом с помощью SSH, то они будут использовать aes128-ctr в качестве шифра по умолчанию.

Асимметричное шифрование

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

асимметричное шифрование как работает ssh

Публичный ключ, как понятно из его названия свободно распространяется между всеми группами. Однако несмотря на то, что он тесно связан с приватным ключом в плане его функциональности, приватный ключ не может быть математически вычислен с помощью публичного. Взаимоотношения между двумя ключами крайне сложны: сообщение, которое зашифровано публичным ключом машины может быть расшифровано лишь приватным ключом той же машины. Эти односторонние отношения означают, что публичный ключ не может дешифровать свои же сообщения, также как не может расшифровать ничего зашифрованного приватным ключом.

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

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

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

Хеширование

Одностороннее хеширование — это еще одна форма криптографии, которая используется в SSH. Такого рода хеширование отличается от двух упомянутых выше тем, что оно не предназначено для дешифровки. Оно создает уникальное значение фиксированной длины для каждого ввода, которое не показывает никакого общего поведения для его раскрытия. Это делает его практически невозможным для обратного преобразования.

Хеширование SSH

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

SSH использует хеши для подтверждения сообщений об аутентификации. Это делается при помощи HMACs или Hash-based Message Authentication Codes (Кода Аутентификации Сообщений, Использующего Хеш-функции). Это обеспечивает подлинность полученной команды.

Если выбран необходимый алгоритм симметричного шифрования, это означает, что также выбран подходящий алгоритм аутентификации сообщений. Это работает также, как выбирается шифр в разделе о симметричном шифровании.

Каждое переданное сообщение должно содержать MAC, который рассчитывается с помощью симметричного ключа, порядкового номера пакета и содержимого сообщения. Оно отправляется извне симметрично зашифрованных данных в качестве итогового раздела пакета связи.

Как работает SSH с этими техниками шифрования

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

SSH по умолчанию работает через TCP порт 22 (это может быть изменено, если необходимо). Хост (сервер) ожидает на порте 22 (или любом другом порте назначенном SSH) входящие подключения. Далее он организует защищённое соединение, проводя аутентификацию клиента и открывая необходимую оболочку, если проверка успешна.

ssh клиент сервер что такое ssh

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

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

Процесс выбора шифрования

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

Как только оно установлено, стороны используют алгоритм обмена Диффи—Хеллмана для создания симметричных ключей. Этот алгоритм позволяет и клиенту, и серверу получить общий код шифрования, который они будет использовать для дальнейших сессий подключения.

Вот как работает алгоритм на самом простом уровне:

  1. И клиент, и сервер генерируют очень большое число, которое не имеет никаких общих черт. Это число также называется стартовое значение.
  2. Далее, обе стороны договариваются об общем механизме шифрования для генерации другого набора значений в особенной для алгоритма манере. Эти механизмы также известны как генераторы шифрования, которые проводят большие операции на стартовом значении. В качестве примера можно привести AES (Advanced Encryption Standard).
  3. Обе стороны отдельно друг от друга генерируют другие числа. Они используются в качестве приватных ключей для сообщений.
  4. Эти только что сгенерированные приватные ключи, с общим числом и алгоритмом шифрования (AES) используются для вычисления публичного ключа, который доставляется на другой компьютер.
  5. Затем стороны используют их персональные приватные ключи, общий публичный ключ другой машины и изначальное число, чтобы создать финальный общий ключ. Этот ключ будет вычислен обоими компьютерами независимо друг от друга, но он будет одинаковым.
  6. Теперь, когда обе стороны имеют общий ключ, они могут симметрично шифровать всю SSH сессию. Тот же ключ может быть использован для шифрования и дешифровки сообщений (читайте раздел о симметричном шифровании).

Теперь, когда сессия защищенная симметричным шифрованием была установлена, пользователь должен быть авторизован.

Авторизация пользователя

Финальный этап перед тем как пользователь получит доступ к серверу, это его авторизация. Для этого большинство пользователей используют пароль. Пользователя попросят вписать имя и затем последует пароль. Эти данные будут переданы через защищённый симметричным шифрованием туннель, поэтому они не могут быть перехвачены третьими лицами.

Однако даже если пароли зашифрованы, их не рекомендуют использовать для защищённого соединения. Причиной тому является относительная простота с которой боты могут подобрать пароль к вашему аккаунту. Поэтому рекомендуется использование пары ключей SSH.

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

Заключение

Углубление своих знаний о том, что такое SSH и как он работает помогает лучше понять защитные аспекты этой технологии. Многие люди думают об этом процессе как о непонятном и невероятно сложном, однако, это гораздо проще чем им кажется. Если вам интересно узнать, сколько времени потребуется компьютеру, чтобы вычислить хеш и авторизовать пользователя, что же, это происходит меньше чем за секунду. Большая часть этого времени уходит на передачу данных через Интернет.

Надеемся, это руководство помогло вам узнать, что такое SSH и понять как различные технологии могут объединиться вместе и играть в одном механизме очень важную роль. Также вы узнали почему Telnet стал достоянием прошлого сразу после того как пришёл SSH.

Чтобы найти ещё больше руководство по Linux, загляните в раздел VPS.

 

 

Author
Автор

Elena B.

Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.