Свежий 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-ключи работают парами: приватный ключ остаётся у вас на компьютере, публичный ключ копируется на сервер. При подключении сервер проверяет, что ваш приватный ключ соответствует публичному — без пароля, но куда надёжнее.
На 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-сервера находится по пути /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. Большинство провайдеров предоставляют её в панели управления.
- Войдите в панель управления провайдера и найдите раздел «Консоль» или «KVM».
- Откройте веб-консоль — она покажет терминал вашего сервера.
- Войдите под root (если пароль root ещё не сброшен).
- Откройте
/etc/ssh/sshd_configи исправьте ошибку. - Восстановите backup:
sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config - Перезапустите 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-хостинг в нашем каталоге и найти подходящий под ваш проект.