Как настроить SSH на VPS безопасно — ключи, порт, fail2ban
📖 Гайды

Как настроить SSH на VPS — безопасное подключение к серверу с нуля

Марина
Марина
📅 27 мая 2026 👁 99 просмотров
Как настроить SSH на VPS — безопасное подключение к серверу с нуля

Свежий VPS по умолчанию открыт на порту 22, принимает пароль root и ждёт. Боты это знают — первые попытки перебора появляются через несколько минут после создания сервера. Настроить SSH правильно займёт около 20 минут: сменить порт, создать SSH-ключи, закрыть вход по паролю, установить Fail2ban. Никаких сторонних сервисов — только стандартный инструментарий Linux и сервер с Ubuntu.

Что такое SSH и почему стандартные настройки небезопасны

SSH (Secure Shell) — протокол для удалённого управления сервером по зашифрованному каналу. Через него вы вводите команды, копируете файлы, перезапускаете службы. Без SSH работа с VPS-хостингом практически невозможна.

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

Риски стандартной конфигурации SSH:

  • брутфорс по паролю — боты перебирают словари и популярные пароли;
  • вход под root — компрометация даёт полный контроль над сервером;
  • стандартный порт 22 — первое, что проверяют при сканировании;
  • нет ограничений на число попыток — перебор может длиться бесконечно.

Все эти проблемы устраняются за несколько шагов. Официальная документация по OpenSSH доступна на openssh.com, а по настройке Ubuntu — на help.ubuntu.com.

Что понадобится перед настройкой

  • VPS с Ubuntu 20.04 или 22.04 (инструкция применима и к другим дистрибутивам на базе Debian);
  • root-доступ или пользователь с правами sudo;
  • SSH-клиент: Terminal на macOS/Linux или PuTTY на Windows;
  • несколько минут и стабильное интернет-соединение.

Если VPS ещё нет — в нашем каталоге можно выбрать надёжный VPS-хостинг с фильтрами по локации, цене и типу виртуализации.

Шаг 1 — Первое подключение и создание нового пользователя

Первый вход на сервер выполняется под root. Замените YOUR_IP на IP-адрес вашего VPS:

ssh root@YOUR_IP

Система запросит пароль, который прислал провайдер. После входа сразу создайте отдельного пользователя — работать под root постоянно не стоит. Компрометация root-сессии означает полный контроль злоумышленника над сервером.

adduser deploy

Команда запросит пароль для нового пользователя и несколько необязательных полей (имя, телефон — можно пропустить). После этого добавьте пользователя в группу sudo, чтобы он мог выполнять команды с повышенными правами:

usermod -aG sudo deploy

Флаг -aG означает «добавить к группе» — -a не затирает существующие группы пользователя. Теперь есть рабочий аккаунт вместо root. Дальнейшие шаги выполняйте под ним или под root, если удобнее пока доделываем настройку.

Шаг 2 — Генерация SSH-ключей на локальной машине

Как настроить SSH на VPS — безопасное подключение к серверу с нуля — иллюстрация

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

На Linux и macOS откройте терминал и выполните:

ssh-keygen -t ed25519 -C "your_comment"

Флаг -t ed25519 задаёт алгоритм — современный и компактный, предпочтительнее старого RSA. Флаг -C добавляет комментарий к ключу (обычно email или имя машины). Команда спросит, куда сохранить ключ — нажмите Enter, чтобы использовать путь по умолчанию. Passphrase (пароль на ключ) добавляет защиту: без него приватный ключ работает сам по себе.

На Windows рекомендуем использовать PuTTYgen: запустите программу, выберите тип EdDSA, нажмите Generate и сохраните оба файла.

Где хранится пара ключей

После генерации на Linux/macOS в папке ~/.ssh/ появятся два файла:

  • ~/.ssh/id_ed25519 — приватный ключ;
  • ~/.ssh/id_ed25519.pub — публичный ключ.

Приватный ключ нельзя передавать никому и никуда. Если он будет утерян или скомпрометирован — восстановить доступ к серверу через него не получится. Сделайте резервную копию в надёжном месте.

Копирование публичного ключа на сервер

Самый простой способ — команда ssh-copy-id. Укажите имя пользователя и IP сервера:

ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@YOUR_IP

Команда подключится по паролю и добавит публичный ключ в файл ~/.ssh/authorized_keys на сервере. После этого подключение по ключу заработает автоматически.

Если ssh-copy-id недоступен (например, вы на Windows без WSL), скопируйте содержимое файла id_ed25519.pub вручную. Подключитесь к серверу по паролю и выполните:

mkdir -p ~/.ssh
echo "ВСТАВЬТЕ_СОДЕРЖИМОЕ_ПУБЛИЧНОГО_КЛЮЧА" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh

Права 600 на файл и 700 на папку обязательны — SSH откажет в доступе, если права будут шире.

Шаг 3 — Настройка файла sshd_config

Как настроить SSH на VPS — безопасное подключение к серверу с нуля — иллюстрация

Главный конфигурационный файл SSH-сервера находится по пути /etc/ssh/sshd_config. Перед любыми правками сделайте резервную копию:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Теперь откройте файл для редактирования:

sudo nano /etc/ssh/sshd_config

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

Смена порта SSH

Найдите строку #Port 22 и замените на:

Port 2222

Можно выбрать любой незанятый порт от 1024 до 65535. Смена порта — не полноценная защита, а шумоподавление: автоматические сканеры проверяют порт 22 в первую очередь, нестандартный порт они реже трогают. Важно: сначала откройте новый порт в файрволе, и только потом перезапускайте SSH.

Отключение входа по паролю

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

PasswordAuthentication no
PermitRootLogin no

PasswordAuthentication no — отключает вход по паролю полностью, только ключи. PermitRootLogin no — запрещает прямой вход под root даже с ключом.

Другие рекомендуемые параметры

MaxAuthTries 3
LoginGraceTime 30
AllowUsers deploy

MaxAuthTries 3 ограничивает число попыток авторизации за одно соединение. LoginGraceTime 30 — максимум 30 секунд на авторизацию, после чего соединение сбрасывается. AllowUsers deploy разрешает вход только указанному пользователю — добавляйте через пробел, если нужно несколько.

После всех изменений перезапустите SSH-сервер:

sudo systemctl restart sshd

Шаг 4 — Настройка Fail2ban для защиты от перебора

Fail2ban отслеживает лог авторизаций и блокирует IP-адреса, с которых поступает слишком много неудачных попыток. Стандартный инструмент для любого Linux-сервера в публичном интернете.

Установка:

sudo apt update && sudo apt install fail2ban -y

Создайте локальный конфиг — он не будет перезаписан при обновлениях пакета:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Найдите секцию [sshd] или добавьте её в конец файла:

[sshd]
enabled = true
port    = 2222
maxretry = 3
bantime  = 3600
findtime = 600

port = 2222 — укажите тот же порт, что задали в sshd_config. maxretry = 3 — три неудачные попытки. bantime = 3600 — бан на 3600 секунд (1 час). findtime = 600 — три попытки должны произойти в течение 10 минут, чтобы сработал бан.

Запустите службу и проверьте статус:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo fail2ban-client status sshd

Команда fail2ban-client status sshd покажет количество заблокированных IP и текущую статистику. После нескольких часов работы здесь уже будут первые строки.

Шаг 5 — Настройка файрвола UFW

UFW (Uncomplicated Firewall) — стандартный инструмент управления правилами сетевого экрана в Ubuntu. Прежде чем перезапускать SSH, откройте новый порт:

sudo ufw allow 2222/tcp

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

Включите UFW и проверьте статус:

sudo ufw enable
sudo ufw status verbose

В выводе должна быть строка про порт 2222 со статусом ALLOW. Если на сервере работает веб-сервер — также разрешите порты 80 и 443:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Шаг 6 — Настройка ~/.ssh/config на локальной машине

Каждый раз вводить ssh -p 2222 deploy@192.168.1.100 неудобно. Файл ~/.ssh/config на вашей локальной машине позволяет задать алиасы для серверов.

Создайте или откройте файл ~/.ssh/config и добавьте блок:

Host myserver
    HostName YOUR_IP
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

После этого подключение выглядит так:

ssh myserver

Host — любое удобное имя. HostName — IP или домен сервера. IdentityFile — путь к приватному ключу. Если серверов несколько — добавляйте отдельный блок Host для каждого. Права на файл config должны быть 600:

chmod 600 ~/.ssh/config

Типичные ошибки при настройке SSH

  • Закрыли текущую сессию до проверки нового подключения — потеряли доступ.
  • Забыли открыть новый порт в UFW перед перезапуском sshd.
  • Скопировали публичный ключ с опечаткой — авторизация по ключу не работает.
  • Не сделали резервную копию sshd_config — при ошибке нет пути назад.
  • Установили PasswordAuthentication no до того, как убедились, что ключи работают.
  • Потеряли приватный ключ — восстановить без консольного доступа невозможно.
  • В файле jail.local указали старый порт 22 вместо нового 2222 — Fail2ban не защищает реальный порт.

Что делать, если закрыли доступ к серверу

Если SSH недоступен — воспользуйтесь веб-консолью провайдера. Это VNC, noVNC или KVM-консоль прямо в браузере, которая работает независимо от SSH. Большинство провайдеров предоставляют её в панели управления.

  1. Войдите в панель управления провайдера и найдите раздел «Консоль» или «KVM».
  2. Откройте веб-консоль — она покажет терминал вашего сервера.
  3. Войдите под root (если пароль root ещё не сброшен).
  4. Откройте /etc/ssh/sshd_config и исправьте ошибку.
  5. Восстановите backup: sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
  6. Перезапустите sshd: sudo systemctl restart sshd

Провайдеры, у которых есть удобная KVM-консоль: Aeza, Selectel, AdminVPS. У каждого из них консоль доступна через личный кабинет без дополнительных настроек.

Если вы ещё выбираете сервер, обратите внимание на тарифы VPS в России и VPS в Германии — в обоих разделах провайдеры с поддержкой KVM-виртуализации.

Подробнее о том, чем отличается KVM от других типов виртуализации: Что такое KVM-виртуализация.

Чек-лист настройки SSH

Пробегитесь по списку и убедитесь, что ничего не пропустили:

  • Создан новый sudo-пользователь, работа под root прекращена.
  • SSH-ключи сгенерированы на локальной машине.
  • Публичный ключ скопирован в ~/.ssh/authorized_keys на сервере.
  • В sshd_config изменён порт на нестандартный.
  • Отключён вход по паролю (PasswordAuthentication no).
  • Отключён прямой root-логин (PermitRootLogin no).
  • Установлен и настроен Fail2ban для нового порта.
  • UFW настроен — новый порт открыт, лишние закрыты.
  • Локальный ~/.ssh/config настроен для быстрого подключения.

Полезные материалы по теме: Как настроить VPS с нуля и Как перенести сайт на VPS.

Ваш VPS теперь защищён

После выполнения всех шагов SSH на вашем сервере настроен правильно: нестандартный порт, вход только по ключам, отключённый root, Fail2ban блокирует переборщиков, UFW пропускает только нужный трафик. Это базовый минимум, который закрывает 95% автоматических атак на SSH.

Мы собрали 45 проверенных хостеров с отзывами и характеристиками тарифов — выбрать надёжный VPS-хостинг в нашем каталоге и найти подходящий под ваш проект.

Поделиться:
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.