Первая настройка VPS на Ubuntu: 30 минут после покупки

Девять шагов от письма с паролем root до сервера, к которому нельзя войти по паролю: смена пароля root, обновления, пользователь с sudo, SSH-ключи, ufw, swap, часовой пояс, автообновления безопасности и fail2ban. Ubuntu 24.04 и 26.04 LTS, сентябрь 2026.

Что сделать и в каком порядке

Свежий VPS приходит с одним пользователем root, паролем в письме и открытым портом SSH, по которому боты начинают перебирать пароли через минуты после включения. Первые полчаса уходят на девять шагов: подключиться и сменить пароль root, обновить систему, завести пользователя с sudo, положить SSH-ключ, запретить вход по паролю и вход root, включить файрвол, добавить swap, выставить часовой пояс и автообновления безопасности, поставить fail2ban.

Команды ниже проверены по документации Ubuntu Server и OpenSSH для Ubuntu 24.04 LTS; на 26.04 LTS они те же. Всё, что помечено «на своей системе проверьте», зависит от образа конкретного хостера: некоторые кладут свои настройки SSH через cloud-init, и их надо учитывать.

Шаг 1. Подключиться и сменить пароль root

Адрес сервера и пароль root — в письме или панели хостера. В Windows 10 и 11 клиент SSH встроен, команда одна и та же в PowerShell, macOS и Linux:

ssh root@203.0.113.10

При первом подключении система спросит, доверять ли отпечатку сервера, — ответьте yes. Если хостер выдал не пароль, а ключ, добавьте параметр -i с путём к файлу ключа.

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

passwd

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

Шаг 2. Обновить систему

Образ у хостера собран недели или месяцы назад, в нём десятки необновлённых пакетов, включая OpenSSH и ядро.

apt update && apt upgrade -y

Если в конце обновление сообщило про новое ядро или файл /var/run/reboot-required появился, перезагрузитесь командой reboot и подключитесь снова.

Шаг 3. Пользователь с sudo

Работать под root каждый день не стоит: одна опечатка в rm — и восстанавливать нечего. Заведите обычного пользователя и дайте ему право повышать привилегии через sudo. Имя замените на своё.

adduser user
usermod -aG sudo user

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

Шаг 4. SSH-ключ вместо пароля

Ключ генерируется на вашем компьютере, не на сервере. Тип ed25519 короче и быстрее RSA и поддерживается всеми современными системами.

ssh-keygen -t ed25519 -C "user@laptop"

Публичную часть нужно положить на сервер в файл authorized_keys нового пользователя. С macOS и Linux это делает одна команда:

ssh-copy-id user@203.0.113.10

В Windows команды ssh-copy-id нет. Выведите содержимое файла ~/.ssh/id_ed25519.pub, затем на сервере под новым пользователем создайте каталог и файл:

mkdir -p ~/.ssh && chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Не закрывая текущее окно, откройте второе и проверьте, что вход по ключу работает: ssh user@203.0.113.10 должен пустить без запроса пароля. Пока это не подтверждено, к следующему шагу не переходите — иначе можно остаться снаружи.

Шаг 5. Запретить вход по паролю и вход root

На Ubuntu 22.04 и новее основной файл /etc/ssh/sshd_config подключает каталог /etc/ssh/sshd_config.d, и настройки из него имеют приоритет. Образы многих хостеров кладут туда файл вроде 50-cloud-init.conf с разрешённым паролем, поэтому правки в основном файле могут не сработать. Надёжнее создать свой файл, который читается первым:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf

Содержимое файла:

PasswordAuthentication no
PermitRootLogin no
KbdInteractiveAuthentication no

Проверьте, что итоговая конфигурация без ошибок и значения применились, затем перезапустите службу:

sudo sshd -t && sudo sshd -T | grep -E "passwordauthentication|permitrootlogin"
sudo systemctl restart ssh

Снова во втором окне убедитесь, что вход по ключу работает, а ssh root@… отказывает. На своей системе проверьте, нет ли в /etc/ssh/sshd_config.d других файлов с PasswordAuthentication yes: имя файла с меньшим номером выигрывает.

Шаг 6. Файрвол ufw

ufw уже установлен в Ubuntu Server и по умолчанию выключен. Разрешите SSH до включения, иначе следующая команда отрежет вас от сервера.

sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verbose

Дальше открывайте только то, что действительно слушает наружу: sudo ufw allow 80,443/tcp для сайта, порт игрового сервера для Minecraft. Порты баз данных, панелей и Docker-контейнеров наружу не открывайте — к ним подключаются через SSH-туннель.

Шаг 7. Swap на маленькой памяти

На тарифах с 1–2 ГБ памяти обновление пакетов или сборка зависимостей упирается в её нехватку, и процесс убивается. Файл подкачки на 1–2 ГБ решает это ценой места на диске.

sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile none swap sw 0 0" | sudo tee -a /etc/fstab
free -h

Проверьте, что у образа хостера swap уже не настроен: free -h покажет строку Swap с ненулевым размером.

Шаг 8. Часовой пояс и автообновления безопасности

По умолчанию сервер живёт по UTC, и время в логах будет отличаться от вашего на три часа. Выставьте свой пояс:

sudo timedatectl set-timezone Europe/Moscow

Пакет unattended-upgrades в Ubuntu Server обычно установлен и ставит обновления безопасности сам. Проверьте, что он включён:

sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

В диалоге выберите «Yes». Перезагрузку после обновления ядра он не делает — это остаётся за вами, раз в несколько недель.

Шаг 9. fail2ban против перебора

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

sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Настройки по умолчанию для sshd в Ubuntu подходят как есть; правки, если понадобятся, делайте в /etc/fail2ban/jail.local, а не в jail.conf — тот перезаписывается при обновлении.

Чего не делать в первые полчаса

Не ставить панель управления «на всякий случай»: это лишний сервис наружу и лишние обновления. Не открывать порты «пока не разберусь». Не откладывать смену пароля root из шага 1: пока он прежний, вход по паролю через SSH отключён лишь наполовину — консоль в панели хостера его принимает.

Не пропускать шаг с проверкой ключа во втором окне. Большинство историй «остался без доступа к серверу» начинаются с того, что человек отключил пароли до того, как проверил ключ. Если это случилось, у хостера обычно есть консоль в панели, через неё можно вернуть PasswordAuthentication yes.

Какой сервер под это нужен

Под такую настройку хватает минимального тарифа с 1 ГБ памяти: в нашем каталоге на 7 сентября 2026 таких 319 из 321 без видеокарты, самый дешёвый — 150 ₽ в месяц (VDSina «Standard 1/1/10»: 1 vCPU, 1 ГБ, 10 ГБ NVMe), до 500 ₽ — 15 тарифов. Полугигабайтные тарифы за 149 ₽ для системы с swap и обновлениями тесноваты. Подобрать под задачу можно в каталоге, отсортировав по цене.

инструкцииubuntuбезопасность

Сравнить тарифы VPS

Весь каталог с фильтрами и честной сортировкой — цены обновляются автоматически.

Открыть каталог →