Изобретательность злоумышленников никогда не была новшеством, поэтому сегодня многие знают о брутфорсе - взломе путем перебора паролей. Специальные боты (программы), работая в автоматическом режиме, позволяют хакерам войти в сеть с помощью любой уязвимости.
Поэтому, когда речь идет о безопасном подключении к удаленному серверу, необходим более безопасный способ, чем обычный пароль. Необходимый уровень защиты может обеспечить SSH.
SSH расшифровывается как Secure Shell. Это сетевой протокол на базе криптографии, который используется для безопасного удаленного доступа к компьютерам и серверам. Технологии, используемые в 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, поскольку он часто устанавливается по умолчанию во многих дистрибутивах 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. В системах на базе Ubuntu или Debian это команда:
sudo service ssh restart
На macOS служба SSH перезапускается автоматически после сохранения файла конфигурации.
Если включен брандмауэр, то необходимо разрешить входящие соединения SSH командой:
sudo ufw allow ssh
Чтобы дать разрешение на Windows следуйте следующим шагам:
После завершения всех этих действий, необходимо создать ключ SSH и подключиться к удаленному серверу через SSH-клиент.
Ключ SSH можно сгенерировать в специальном онлайн-сервисе или на ПК с помощью утилиты, подобранной в зависимости от операционной системы (Windows, Linux, MacOS).
Для ОС Windows рекомендуется использовать утилиту PuTTY (для генерации ключа автоматически устанавливается приложение PuTTYgen, скачать на официальном сайте). Создание ключей происходит внутри приложения с понятным графическим интерфейсом, после чего Public key (имеет расширение .pub) необходимо скопировать на сервер, в файл authorized_keys.
Более подробно процесс генерации и сохранения ключа для Windows мы описали в статье нашей базы знаний.
Для создания 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 passphrase (empty for no passphrase):
Enter same passphrase again:
id_rsa - стандартное название файла приватного (закрытого) ключа
id_rsa.pub - стандартное название файла публичного (открытого) ключа. Данный ключ необходимо копировать на серверы, к которым Вы хотите получать доступ при использовании приватного ключа.
О том, как разместить ключи на сервере в ОС Linux или MacOS, мы подробно рассказали здесь.
Для подключения в ОС Linux/MacOS, как и при генерации ключей, используется встроенная утилита Терминал.
Готово! Вы подключены к серверу.
Чтобы подключиться к серверу через операционную систему Windows необходимо зайти в PuTTY, где мы генерировали ключи.
Готово! Вы подключены к серверу.
В целом, действия по обеспечению безопасного подключения к удаленному серверу по SSH на этом не заканчиваются. Само по себе соединение SSH безопаснее, чем другие способы подключения к серверу, и не настолько тяжело в освоении.