yandex

SSH протокол: что это такое и как использовать на Windows и Linux


    Дарим 20 000 бонусов <br/>
    <span class="bold">для юрлиц и ИП</span>
Дарим 20 000 бонусов
для юрлиц и ИП
Подробнее
Avatar icon

Александра Гонтарева

Редактор блога

Статья

Время чтения

10 минут

SSH (Secure Shell) — это стандартный протокол для безопасного удаленного управления серверами Linux и Windows. В этой статье вы узнаете, как установить SSH-клиент, подключиться с его помощью к серверу, настроить аутентификацию по ключам и решить частые ошибки. Как водится — все со скриншотами и готовыми командами.

Что такое протокол SSH

SSH (Secure Shell) — это протокол для безопасного удаленного подключения к другому компьютеру через интернет. То есть без него у нас бы не было возможности удаленно подключаться к любым устройствам и настраивать софт. А главное — делать это безопасно и без утечки информации. 

Устроено подключение по SSH  так:

  1. При подключении используются два ключа — открытый (публичный) и закрытый (приватный).

  2. Публичный ключ хранится на сервере и шифрует данные.

  3. Приватный ключ остается у вас — только с его помощью можно расшифровать информацию.

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

Чтобы на практике показать, как работает SSH-протокол, можно провести аналогию с депозитными ячейками в банке: ячейка — это сервер, а ее содержимое — информация, которую вы храните или хотите передать. Для работы с ячейкой нужны два ключа — один у сотрудника банка, один ваш. То есть даже если кто-то завладеет банковским ключом, без вашего он бесполезен. А если на ваш ключ установлен пароль, то даже в случае его похищения, злоумышленник не сможет вскрыть ячейку. 

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

Примерная схема подключения с помощью протокола SSH
Примерная схема подключения с помощью протокола SSH

Как и зачем разработали SSH

Первую версию SSH в 1995 году разработал финский ученый Тату Юлонен — сразу после того, как сеть Хельсинкского университета подверглась крупной атаке. До этого для доступа к серверам использовали протокол Telnet. Он передавал действия, события (логи) пользователя и пароль через публичную сеть в открытом виде. Однако с появлением SSH удаленный доступ стал куда безопаснее, а интерес потребителей к новому сетевому протоколу возрос. С ним администраторы и разработчики смогли безопасно управлять серверами и передавать данные. 

Вот какие преимущества выгодно выделяли SSH на фоне более «древних» аналогов:

img

Впрочем, уже в 1999 году первоначальный код SSH перестал работать, и появились две альтернативы: коммерческий продукт SSH-2 и бесплатный OpenSSH, который и сейчас используется в большинстве операционных систем.

Сегодня SSH применяется для: 

  • управления облачными серверами;

  • безопасной передачи файлов;

  • работы с git-репозиториями;

  • автоматизации задач через скрипты.

Зачем это нужно? Представьте, что центральный офис вашей компании находится в Казани. А у филиала в Нижнем Новгороде сломался сайт. Через SSH-протокол технический специалист из Казани может:

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

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

  3. Экстренно обновить файлы сайта, если требуется срочное исправление.

  4. Настроить автоматическое резервное копирование, чтобы избежать проблем в будущем.

  5. Запретить доступ злоумышленникам, если проблема была вызвана атакой.

Все это можно сделать за 10-15 минут без необходимости отправлять специалиста в командировку или просить сотрудников филиала выполнять сложные инструкции по телефону.

Главный плюс SSH — безопасное удаленное подключение
Главный плюс SSH — безопасное удаленное подключение

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

Плюсы

  • Защита от подделки IP-адресов и манипулирования данными на маршрутизаторах в сети. SSH защищает от спуфинга и манипуляций с данными, благодаря криптографическим методам: проверке подлинности, шифрованию данных и обеспечению их целостности.

  • Предотвращение DNS-спуфинга. То есть кибератак такого типа, при которых злоумышленники подменяют адреса веб-сайтов в системе, отвечающей за преобразование доменных имен (например, google.com), в IP-адреса. В результате человек, вводящий веб-адрес, может попасть на поддельный сайт, даже не подозревая об этом, а злоумышленники получат доступ к его личной информации.

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

Минусы

  • Несовместимость с некоторыми типами соединений: SSH работает только с одним типом интернет-соединений — TCP. Это значит, что если приложение использует другой тип соединений (UDP), то SSH не сможет его защитить. Например,  UDP-соединения используют видеочаты, потоковые сервисы, онлайн-игры.

  • Риск неправильной настройки. Если SSH настроен неправильно, например, мы используем простые пароли или забываем установить важные обновления, это может дать мошенникам шанс получить доступ к нашим данным.

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

Чтобы полноценно использовать все возможности протокола и избежать проблем с настройкой, давайте подробно рассмотрим механизм его работы и особенности взаимодействия с разными операционными системами (ОС). 

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

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

Установка соединения (Handshake)

Когда вы вводите команду ssh user@example.com, происходит:

  • TCP-подключение, гарантирующее доставку всех пакетов данных Клиент устанавливает соединение с сервером через порт 22 (по умолчанию). 

  • Обмен версиями протокола. Клиент и сервер согласовывают версию SSH (рекомендуется SSH-2).

Принцип работы протокола SSH
Принцип работы протокола SSH

Обмен ключами и шифрование

После установки TCP-соединения:

  • Сервер отправляет свой публичный ключ. Клиент проверяет его по отпечатку (fingerprint). При первом подключении ключ сохраняется в папке ~/.ssh/known_hosts.

  • Создание сессионного ключа. Клиент и сервер используют алгоритм Диффи-Хеллмана. Генерируется временный симметричный ключ для текущей сессии. 

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

Аутентификация пользователя

Система предлагает 2 основных способа аутентификации: 

  • По паролю. Пароль передается в зашифрованном виде. Этот способ менее безопасен, но более прост в настройке. 

  • По ключам. Клиент использует приватный ключ (id_rsa). Сервер проверяет соответствие публичному ключу (authorized_keys).

    Рабочая сессия

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

  • Интерактивную оболочку — для полного доступа к командной строке удаленного сервера. Чаще всего такой доступ необходим для срочного исправления проблем на сервере, обновления ПО на всех корпоративных серверах и проверки логов в режиме реального времени. 

  • Передачу файлов (SCP/SFTP) — для копирования файлов с локального компьютера на сервер или скачивания с сервера. Эта возможность нужна, когда нужно разместить на сайтах какие-нибудь обновления, безопасно передать финансовые отчеты или сделать резервное копирование важных данных.

  • Проброс портов (tunneling) — для создания безопасного туннеля для доступа к закрытым сервисам. Эту технологию используют для безопасной удаленной работы с внутренними CRM/ERP-системами, доступа к тестовым серверам без их выноса в публичный контур или просто для защиты данных при подключении через общедоступные сети, например, в отеле или кафе. 

Базовые команды SSH

Для управления Secure Shell существуют множество команд, рассмотрим самые базовые:

img

Процессы установки и использования Secure Shell немного отличаются в в разных операционных системах и их версиях. Давайте рассмотрим подробно, как это происходит процесс на наиболее популярных ОС. 

SSH в Windows

Если у вас Windows 10 версии 1809 и выше, то OpenSSH уже встроен в систему, дополнительно ничего делать не нужно. Если же версия ОС старше, то потребуется установить OpenSSH-клиент. 

Как установить клиентскую часть OpenSSH в Windows

Есть два способа установки клиента: через настройки Windows или через PowerShell. 

Установка через Windows

Откройте Настройки → Приложения → Приложения и компоненты. Нажмите Дополнительные компоненты → Добавить компонент. Найдите Клиент OpenSSH и установите его. 

Установка через PowerShell

Введите команду Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0. И проверьте, установлена ли программа, введя в командную строку Get-Command ssh.

Процесс установки через PowerShell с успешным завершением
Пример команды SSH

Подключение к серверу через интерактивные оболочки (CMD и PowerShell)

Для начала интерактивную оболочку в поисковой строке компьютера, который планируете подключить к удаленному серверу CMD или PowerShell. В открывшееся окно скопируйте текст ssh<user>@<ip> и замените IP-адрес и имя пользователя. Нажмите Enter и введите пароль пользователя root. 

Пример команды SSH
Пример команды SSH

Здесь мы рассматриваем только подключение к удаленному серверу. Если вас интересуют возможности удаленного управления Windows-серверами через PowerShell с использованием SSH как транспортного протокола, то это тема для отдельной статьи. PowerShell Remoting требует отдельной настройки и рассматривается в продвинутых руководствах.

Как подключиться по SSH с помощью PuTTY

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

Как подключиться с помощью PuTTY:

  1. Загрузите программу на устройство и перейдите к настройкам. Нам нужны две вкладки: SSH и Session.

  2. Во вкладке SSH проверьте, чтобы галочка стояла возле второй версии SSH. Во вкладке Session введите IP-адрес удаленного ПК. Если будете использовать нестандартный номер порта, также введите его. По умолчанию стоит порт 22.

  3. После выберите тип соединения, а чтобы быстрее заходить в SSH и подключаться к удаленному ПК создайте пресет. Выберите нужные параметры закрытия окна при выходе. 

  4. Нажмите Open и в открытом окне введите логин и пароль для подключения к серверу. Готово.

Подключение к серверу через PuTTY
Подключение к серверу через PuTTY

SSH в Linux

В зависимости от версии Linux для загрузки SSH нужны разные наборы команд. Рассмотрим варианты.

  • Загрузка на Ubuntu. Зайдите в служебную строку быстрой комбинацией Ctrl + Alt + T. Затем получите доступ к новым данным и обновите репозиторий командой sudo apt update. Загрузите сетевой протокол командой sudo apt-get install ssh. Следующий шаг — загрузите OpenSSH и добавьте пакет SSH-сервера в список автозагрузки, для этого введите в терминал sudo systemctl enable sshd. Настойки будут установлены по умолчанию. Чтобы проверить, успешно ли прошла установка, наберите в терминале sudo systemctl status sshd.

  • Загрузка на CentOS. Сперва загрузите OpenSSH. Затем настройте SSH-сервер для автоматического запуска при загрузке системы командами sudo systemctl enable sshd и sudo systemctl start sshd. Успешность установки можно проверить командой sudo systemctl status ssh.

  • Загрузку софта на основе APT выполните через команду apt -y install openssh-server.

  • Загрузка софта на основе RPM произведите с помощью команд для пакетного менеджера YUM — yum -y install openssh-serveropenssh-server или для пакетного менеджера DNF — dnf -y install openssh-server.

  • Загрузку софта на основе Pacman выполните командой pacman -S openssh.

Установить подсоединение SSH в Linux можно и с помощью служебного меню. Для этого нужно нажать Ctrl+Alt+T, после подключиться командой ssh root@IP, указав свое имя и IP-адрес своего сервера. Потом потребуется ввести пароль и добавить новое устройство в список доверенных устройств — он добавляется в файл по пути ~/.ssh/known_hosts, где хранится список доверенных устройств.

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

Подключение не работает: что делать

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

Если вы видите надпись «Connection Refused», то следует проверить:

  1. Находится ли клиент в вашей системе. Впишите команду ssh в окне терминала, и если увидите ответ «command not found», значит, нужно установить клиент OpenSSH.

  2. Правильно ли вы написали IP-адрес и указали номер порта. IP можно проверить командой ping <ip>. Если используете нестандартный порт, то нужно добавить аргумент -p к команде (ssh -p <port> <user>@<IP>).

  3. Работает ли служба SSH или ее нужно включить. Чтобы проверить статус, введите sudo systemctl status sshd. А чтобы включить саму службу, введите sudo systemctl start sshd.

  4. Доступен ли SSH на удаленном сервере или его нужно установить.

  5. Не ограничивает ли брандмауэр SSH-соединения или нужно настроить разрешение.

Кстати, учтите, что в Linux Debian для суперпользователя root подключение к серверу по SSH не разрешено, при авторизации будет всплывать уведомление «access denied».

Заключение

Вот мы и разобрались, что SSH — это криптографический сетевой протокол. Он предназначен для удаленного доступа к устройствам через безопасное соединение. Надежное шифрование обеспечивает конфиденциальность и помогает безопасно туннелировать небезопасные приложения, например, SMTP, IMAP, POP3 и CVS.

Содержание

  • Что такое протокол SSH
  • Как и зачем разработали SSH
  • Как работает SSH
  • Базовые команды SSH
  • SSH в Windows
  • SSH в Linux
  • Заключение

Вам может понравиться