Изобретательность злоумышленников никогда не была новшеством, поэтому сегодня многие знают о брутфорсе - взломе путем перебора паролей. Специальные боты (программы), работая в автоматическом режиме, позволяют хакерам войти в сеть с помощью любой уязвимости.
Поэтому, когда речь идет о безопасном подключении к удаленному серверу, необходим более безопасный способ, чем обычный пароль. Необходимый уровень защиты может обеспечить SSH.
Что такое SSH?
SSH расшифровывается как Secure Shell. Это сетевой протокол на базе криптографии, который используется для безопасного удаленного доступа к компьютерам и серверам. Технологии, используемые в SSH, обеспечивают безопасный канал между клиентом и сервером посредством шифрования всех передаваемых данных, включая пароли и команды.
Как использовать SSH?
Протокол SSH позволяет пользователям безопасно входить в удаленную систему и выполнять команды так, будто они непосредственно взаимодействуют с машиной на месте.
Для подключения по SSH необходим SSH-сервер и SSH-клиент. SSH-сервер прослушивает соединения по порту TCP/IP и при запросе связи со стороны клиента производит аутентификацию, после чего начинает обслуживание клиента, допуская пользователя к работе с сервером. SSH-клиент используется для входа на удаленную машину и выполнения необходимых команд.
Также при начале работы необходимо создать приватный и публичный ключи (закрытый и открытый), а затем добавить публичный ключ на сервер. Приватный ключ хранится пользователем и используется при входе на сервер.
Нужно ли использовать командную строку?
Если вы хотите подключиться к удаленному серверу с операционной системы Windows, то достаточно установить на компьютер специальную утилиту (PuTTY, SecureCRT, ShellGuard, Axessh или др.). В данном случае все операции будут выполняться в графическом интерфейсе, с задействованием командной строки только в определенных случаях.
Если же речь идет о подключении с операционных систем Linux или MacOS, то помимо установления специальной утилиты (Openssh, kdessh, lsh-client или др.) понадобится встроенная утилита Терминал. Именно в Терминале необходимо введение команд для установления соединения с удаленным сервером.
Ключ SSH
Ключ SSH - это пара криптографических ключей, используемых в протоколе SSH для безопасной аутентификации. Пара ключей состоит из открытого и закрытого ключей. Открытый ключ размещается на удаленном сервере, а закрытый ключ надежно хранится на компьютере или устройстве клиента.
Когда пользователь пытается установить SSH-соединение с сервером, сервер посылает клиенту запрос. Затем клиент использует свой закрытый ключ для создания цифровой подписи, которая отправляется обратно на сервер. Сервер может проверить эту подпись, используя соответствующий открытый ключ, хранящийся на сервере. Если подпись действительна, клиенту предоставляется доступ.
Ключи SSH представляют собой более безопасную и удобную альтернативу традиционной аутентификации на основе паролей. Они исключают необходимость передачи паролей по сети и устойчивы к атакам методом перебора. SSH-ключи часто используются системными администраторами, разработчиками и другими пользователями, которые часто обращаются к удаленным серверам.
Основные команды SSH
Для непосредственной работы с ключами используются следующие команды:
- ssh. Эта команда используется для установления SSH-соединения с удаленным сервером. Обычно она имеет следующий вид: ssh username@hostname.
- scp. Команда scp (безопасное копирование) позволяет безопасно передавать файлы между локальной машиной и удаленным сервером через SSH-соединение. Она используется следующим образом: scp [options] <source> <destination>.
- ssh-keygen. Данная команда используется для генерации пар ключей SSH. Она создает файлы открытого и закрытого ключей. Основной синтаксис - ssh-keygen [options]. Например, ssh-keygen -t rsa генерирует пару ключей RSA.
- ssh-copy-id. После создания пары ключей SSH вы можете использовать команду ssh-copy-id для копирования открытого ключа на удаленный сервер, обеспечивая аутентификацию без пароля. Команда используется следующим образом: ssh-copy-id username@hostname.
- ssh-agent. Это программа, которая управляет ключами SSH. Он хранит расшифрованные закрытые ключи в памяти. Вы можете запустить программу с помощью команды ssh-agent, а затем использовать ssh-add для добавления вашего закрытого ключа.
Через SSH также можно работать с навигацией, базами данных, файлами, каталогами, архивами и их содержимым (создание директорий и файлов, копирование, перемещение, переименование, удаление файлов и каталогов и др.). Для этого также существует набор команд.
Как включить SSH-соединение
Проверьте, включен ли уже SSH, поскольку он часто устанавливается по умолчанию во многих дистрибутивах Linux и системах macOS. Чтобы проверить, включен ли SSH, откройте Терминал и введите команду:
ssh localhost
Если вы увидите сообщение типа "Connection refused" или "Connection timed out", это означает, что SSH в настоящее время не включен или не настроен. Если вы получите ответ с запросом пароля или защитной фразы, значит, SSH уже включен.
Установите SSH, если это необходимо. В системах на базе Ubuntu или Debian вы можете это сделать, выполнив команду:
sudo apt-get install openssh-server
На macOS, как правило, SSH уже предустановлен.
На Windows нет предустановленного SSH (например, OpenSSH; проверьте наличие данного компонента через Пуск - Параметры - Приложения - Приложения и возможности - Дополнительные компоненты).
После установки SSH может потребоваться настройка, но можно оставить конфигурацию по умолчанию. Файл конфигурации сервера SSH обычно расположен в /etc/ssh/sshd_config в системах Linux, /etc/sshd_config в macOS и C:\ProgramData\ssh\sshd_config в Windows.
Откройте файл конфигурации с правами администратора (sudo nano /etc/ssh/sshd_config) и внесите необходимые изменения:
- Номер порта. По умолчанию SSH прослушивает порт 22. Вы можете изменить его на другой порт в целях безопасности.
- AllowUsers или AllowGroups. Здесь укажите, каким пользователям или группам разрешено подключаться через SSH.
- PasswordAuthentication. Установите значение "yes", чтобы разрешить аутентификацию на основе пароля, или "no", чтобы принудительно использовать аутентификацию на основе ключа.
- PermitRootLogin. Установите значение "yes", если вы хотите разрешить пользователю root входить в систему через SSH. Для повышения безопасности рекомендуется установить значение "no" и использовать вместо него учетную запись обычного пользователя.
После внесения изменений сохраните файл и перезапустите службу SSH. В системах на базе Ubuntu или Debian это команда:
sudo service ssh restart
На macOS служба SSH перезапускается автоматически после сохранения файла конфигурации.
Если включен брандмауэр, то необходимо разрешить входящие соединения SSH командой:
sudo ufw allow ssh
Чтобы дать разрешение на Windows следуйте следующим шагам:
- Откройте брандмауэр Windows Defender с расширенной безопасностью. Вы можете найти его в меню "Пуск".
- Нажмите на "Входящие правила" в левой панели.
- Нажмите на "Новое правило" в правой панели.
- Выберите "Порт" и нажмите "Далее".
- Выберите "Конкретные локальные порты" и введите номер порта SSH (по умолчанию 22). Нажмите "Далее".
- Выберите "Разрешить соединение" и нажмите "Далее".
- Выберите типы сетей, к которым должно применяться правило (например, Domain, Private, Public). Нажмите "Далее".
- Укажите имя правила (например, "SSH"). Нажмите "Готово".
После завершения всех этих действий, необходимо создать ключ SSH и подключиться к удаленному серверу через SSH-клиент.
Как создать ключ SSH?
Ключ SSH можно сгенерировать в специальном онлайн-сервисе или на ПК с помощью утилиты, подобранной в зависимости от операционной системы (Windows, Linux, MacOS).
SSH ключ Windows
Для ОС Windows рекомендуется использовать утилиту PuTTY (для генерации ключа автоматически устанавливается приложение PuTTYgen, скачать на официальном сайте). Создание ключей происходит внутри приложения с понятным графическим интерфейсом, после чего Public key (имеет расширение .pub) необходимо скопировать на сервер, в файл authorized_keys.
Более подробно процесс генерации и сохранения ключа для Windows мы описали в статье нашей базы знаний.
SSH ключ Linux и MacOS
Для создания SSH ключа в системе Linux или MacOS мы рекомендуем установить клиент Openssh посредством двух команд в Терминале (sudo apt update и sudo apt install openssh-client) и сервер Openssh (sudo apt update и sudo apt install openssh-server). После этого продолжите работу в Терминале:
- Запустите команду
ssh-keygen -t rsa -b 2048
- Выберите путь для сохранения пары ключей
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
- При нажатии "Enter" ключи будут сохранены в каталог .ssh вашего домашнего каталога.
- Если не хотите каждый раз вводить защитную фразу при использовании приватного ключа, просто нажмите "Enter".
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
- Готово, пара ключей создана, а на экране вы увидите дополнительную информацию:
id_rsa - стандартное название файла приватного (закрытого) ключа
id_rsa.pub - стандартное название файла публичного (открытого) ключа. Данный ключ необходимо копировать на серверы, к которым Вы хотите получать доступ при использовании приватного ключа.
О том, как разместить ключи на сервере в ОС Linux или MacOS, мы подробно рассказали здесь.
Подключение к серверу по SSH
SSH Linux и MacOS
Для подключения в ОС Linux/MacOS, как и при генерации ключей, используется встроенная утилита Терминал.
- Для установления соединение с сервером в терминале вводится команда с двумя составляющимии root – логин и 192.168.77.77 - IP адрес сервера: ssh root@192.168.77.77
- При первом подключении необходимо дать подтверждение во всплывающем уведомлении и нажать Enter.
- Ввести пароль и нажать "Enter".
Готово! Вы подключены к серверу.
SSH Windows
Чтобы подключиться к серверу через операционную систему Windows необходимо зайти в PuTTY, где мы генерировали ключи.
- В первом окне (скриншот ниже) следует ввести параметры Host Name (IP адрес вашего сервера) и Port (по умолчанию для SSH используется 22). При необходимости сохраните сессию (Save).
- После нажмите на "Open" и согласитесь во всплывающем окне о подтверждении соединения.
- Введите в открывшейся консоли логин и пароль: Login as (root) и Password. После нажмите "Enter".
Готово! Вы подключены к серверу.
Лучшие практики по использованию SSH
- Измените порт SSH по умолчанию в целях безопасности
- Внедрите двухфакторную аутентификацию
- Привяжите ключи SSH к отдельному человеку, а не только к общей учетной записи, которой пользуются несколько юзеров
- Применяйте принцип наименьших привилегий (PoLP), предоставляя доступ только к определенным секциям
- Внедрите политику изменения SSH-ключей (не используйте одинаковые комбинации для нескольких аккаунтов и сессий)
В целом, действия по обеспечению безопасного подключения к удаленному серверу по SSH на этом не заканчиваются. Само по себе соединение SSH безопаснее, чем другие способы подключения к серверу, и не настолько тяжело в освоении.
24/7 Поддержка
Положитесь на нас. Техподдержка is*hosting доступна 24/7 и не игнорирует запросы клиентов.
Подробнее