Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux VPS Безопасность

Подключение и настройка SSH на VPS: Полное руководство по безопасности

Secure shell (SSH) access — это основа профессионального управления сервером. Независимо от того, развертываете ли вы сайт WordPress, отправляете код через Git или администрируете пользовательские приложения, SSH предоставляет вам зашифрованный аутентифицированный туннель прямо на ваш сервер. Это подробное руководство проведет вас через каждый шаг — от вашего первого подключения до защиты вашей установки от реальных атак — чтобы вы могли управлять своей средой VPS Hosting с уверенностью.

Почему безопасность SSH имеет значение

Каждый общедоступный сервер подвергается постоянному потоку автоматизированных попыток перебора. В течение нескольких минут после запуска VPS боты начинают сканировать порт 22 и пробовать распространённые комбинации имён пользователей и паролей. Плохо защищённая конфигурация SSH — одна из наиболее распространённых точек входа для злоумышленников.

Хорошая новость: несколько целенаправленных изменений конфигурации значительно сокращают вашу поверхность атаки. В сочетании с надёжной инфраструктурой — такой как хранилище на основе NVMe и встроенная защита от DDoS — правильно укреплённая конфигурация SSH обеспечивает быстрый, устойчивый и действительно безопасный канал управления.

Если вы ещё не выбрали среду хостинга, рассмотрите возможность изучения планов VPS Hosting, которые включают полный доступ root, выделенные ресурсы и гибкость для реализации всех мер безопасности, описанных в этом руководстве.

Предварительные требования

Перед началом убедитесь, что у вас есть следующее:

ТребованиеДетали
Работающий VPSЛюбой дистрибутив Linux (Ubuntu, Debian, CentOS, AlmaLinux и т. д.) с установленной ОС
SSH клиентLinux/macOS: встроенная команда ssh. Windows: PuTTY, Windows Terminal или WSL
IP-адрес сервераПредоставляется в панели управления хостингом после подготовки
Учетные данные для входаИмя пользователя по умолчанию (root или пользователь с правами sudo) и начальный пароль
Базовое знакомство с терминаломВозможность выполнять команды и редактировать файлы с помощью nano или vim

> Совет: Если вы управляете несколькими серверами или вам нужен графический интерфейс вместе с SSH, ознакомьтесь с Панелями управления VPS для таких вариантов, как cPanel, Plesk и DirectAdmin, которые дополняют доступ через командную строку.

Подключение к вашему VPS через SSH

На Linux или macOS

Откройте терминал и выполните:

ssh username@your_server_ip

Замените username на ваше фактическое имя пользователя (обычно root для нового VPS) и your_server_ip на публичный IP-адрес вашего сервера.

Пример:

ssh root@203.0.113.45

Приглашение при первом подключении:

The authenticity of host '203.0.113.45 (203.0.113.45)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Введите yes и нажмите Enter. Это добавит ключ хоста сервера в ваш файл ~/.ssh/known_hosts. При последующих подключениях SSH будет автоматически проверять этот отпечаток — если он когда-либо неожиданно изменится, рассматривайте это как потенциальный инцидент безопасности.

Введите ваш пароль при появлении запроса.

На Windows с использованием PuTTY

  1. Загрузите и откройте PuTTY с putty.org.
  2. В поле Host Name (or IP address) введите IP-адрес вашего сервера.
  3. Убедитесь, что Port установлен на 22 и Connection type — это SSH.
  4. Нажмите Open.
  5. Примите отпечаток ключа хоста при появлении запроса.
  6. Введите ваше имя пользователя и пароль.

> Альтернатива для Windows 10/11: Windows Terminal и PowerShell включают встроенный клиент OpenSSH. Вы можете использовать тот же синтаксис ssh username@your_server_ip как на Linux/macOS — никаких сторонних инструментов не требуется.

Усиление безопасности SSH: пошаговая конфигурация

Все поведение SSH контролируется одним файлом конфигурации:

/etc/ssh/sshd_config

Откройте его с повышенными привилегиями:

sudo nano /etc/ssh/sshd_config

Выполните каждый шаг усиления безопасности ниже. После внесения всех изменений вы перезагрузите сервис один раз — это описано в следующем разделе.

Шаг 1: Измените порт SSH по умолчанию

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

Найдите эту строку:

#Port 22

Измените её на порт по вашему выбору (используйте число от 1024 до 65535, которое не используется другим сервисом):

Port 2222

Удалите # для раскомментирования строки. Сохраните с помощью CTRL+X, затем Y, затем Enter.

> Важно: Перед перезагрузкой SSH убедитесь, что ваш брандмауэр разрешает новый порт. См. примечание о брандмауэре ниже.

Обновите ваш брандмауэр (пример UFW):

sudo ufw allow 2222/tcp
sudo ufw deny 22/tcp
sudo ufw reload

Обновите ваш брандмауэр (пример firewalld):

sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload

Шаг 2: Отключите вход от root

Разрешение прямого входа root через SSH — значительный риск безопасности. Вместо этого войдите как обычный пользователь и повышайте привилегии с помощью sudo при необходимости.

В sshd_config найдите:

PermitRootLogin yes

Измените на:

PermitRootLogin no

Перед отключением входа root убедитесь, что у вас есть обычный пользователь с привилегиями sudo:

# Create a new user
adduser adminuser

# Grant sudo privileges
usermod -aG sudo adminuser

Проверьте, что этот пользователь может войти и выполнять команды sudo *перед* отключением входа root и перезагрузкой SSH.

Шаг 3: Отключите аутентификацию по паролю (после настройки ключей)

После настройки аутентификации по ключам SSH (следующий раздел) полностью отключите вход по паролю, чтобы исключить риск перебора:

PasswordAuthentication no

Также убедитесь, что эти связанные директивы установлены:

ChallengeResponseAuthentication no
UsePAM no

Шаг 4: Дополнительные рекомендуемые директивы

Добавьте или проверьте эти параметры в sshd_config для комплексной базовой конфигурации усиления безопасности:

# Limit authentication attempts per connection
MaxAuthTries 3

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable empty passwords
PermitEmptyPasswords no

# Restrict SSH to specific users (replace 'adminuser' with your username)
AllowUsers adminuser

# Use only strong protocol version
Protocol 2

# Disable X11 forwarding if not needed
X11Forwarding no

Настройка аутентификации по SSH ключам

Аутентификация по SSH ключам заменяет пароли криптографической парой ключей: приватным ключом, который остается на вашем локальном компьютере, и публичным ключом, который находится на сервере. Даже если злоумышленник знает ваше имя пользователя, он не сможет пройти аутентификацию без вашего приватного ключа.

Шаг 1: Создание пары SSH ключей (на вашем локальном компьютере)

ssh-keygen -t ed25519 -C "your_email@example.com"

> Почему Ed25519? Это быстрее и безопаснее, чем старый алгоритм RSA. Если ваша система требует RSA для совместимости, используйте ssh-keygen -t rsa -b 4096 вместо этого.

Вам будет предложено выбрать место сохранения (по умолчанию ~/.ssh/id_ed25519 подойдет) и установить парольную фразу. Всегда устанавливайте парольную фразу — она шифрует ваш приватный ключ, чтобы физический доступ к вашему компьютеру не компрометировал автоматически ваши серверы.

Результат:

Your identification has been saved in /home/you/.ssh/id_ed25519
Your public key has been saved in /home/you/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com

Шаг 2: Копирование публичного ключа на ваш VPS

Самый простой способ использует ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub username@your_server_ip

Эта команда:

  1. Подключается к вашему серверу, используя аутентификацию по паролю.
  2. Создает ~/.ssh/authorized_keys на сервере, если он не существует.
  3. Добавляет ваш публичный ключ в этот файл.
  4. Автоматически устанавливает правильные разрешения.

Ручной способ (если ssh-copy-id недоступен):

# On your local machine, display your public key
cat ~/.ssh/id_ed25519.pub

# On your server, add it manually
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "paste-your-public-key-here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Шаг 3: Проверка входа по ключу перед отключением паролей

Не отключайте аутентификацию по паролю, пока вы не подтвердили, что вход по ключу работает. Откройте новое окно терминала и протестируйте:

ssh -i ~/.ssh/id_ed25519 username@your_server_ip -p 2222

Если вы подключитесь успешно без запроса пароля (только парольная фраза вашего ключа, если установлена), переходите к отключению PasswordAuthentication в sshd_config.

Перезагрузка и проверка SSH сервиса

После сохранения всех изменений в sshd_config, проверьте синтаксис конфигурации перед перезагрузкой:

sudo sshd -t

Если ошибок не возвращено, перезагрузите SSH демон:

sudo systemctl restart sshd

Проверьте, что сервис успешно запустился:

sudo systemctl status sshd

Вы должны увидеть Active: active (running) в выводе.

> Критический совет безопасности: Держите ваш текущий SSH сеанс открытым при тестировании новой конфигурации в отдельном окне. Если что-то пойдет не так, ваш существующий сеанс останется активным и вы сможете отменить изменения.

Тестирование вашей безопасной конфигурации

Тест 1: Подключение на новый порт с вашим ключом

С вашей локальной машины:

ssh username@your_server_ip -p 2222

Ожидаемый результат: Вы вошли, используя ваш SSH ключ (запрос пароля ключа, если вы его установили, но не пароль сервера).

Тест 2: Подтверждение блокировки входа root

ssh root@your_server_ip -p 2222

Ожидаемый результат:

Permission denied (publickey).

или

root@your_server_ip: Permission denied

Тест 3: Подтверждение отключения аутентификации по паролю

ssh username@your_server_ip -p 2222 -o PubkeyAuthentication=no

Ожидаемый результат:

Permission denied (publickey).

Если бы аутентификация по паролю была все еще включена, вам было бы предложено ввести пароль.

Дополнительное усиление безопасности: Fail2Ban

Fail2Ban мониторит файлы логов и автоматически блокирует IP-адреса, показывающие признаки вредоносной активности — такие как повторные неудачные попытки входа SSH. Это важное дополнение к шагам усиления SSH выше.

Установка Fail2Ban

Ubuntu/Debian:

sudo apt update && sudo apt install fail2ban -y

CentOS/AlmaLinux/RHEL:

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Настройка Fail2Ban для SSH

Создайте локальный файл переопределения (никогда не редактируйте файл по умолчанию jail.conf напрямую):

sudo nano /etc/fail2ban/jail.local

Добавьте следующее:

[DEFAULT]
bantime  = 3600
findtime = 600
maxretry = 5

[sshd]
enabled  = true
port     = 2222
logpath  = %(sshd_log)s
backend  = %(sshd_backend)s

Отрегулируйте port в соответствии с вашим пользовательским портом SSH. Сохраните, затем включите и запустите Fail2Ban:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Проверьте активные блокировки и статус jail:

sudo fail2ban-client status sshd

Резервное копирование ваших SSH ключей и конфигурации

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

  • Создайте резервную копию вашего приватного ключа в зашифрованном менеджере паролей или в автономном хранилище.
  • Сохраните копию sshd_config перед внесением изменений: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
  • Используйте консоль вашего хостинг-провайдера вне полосы пропускания (доступ VNC/KVM через панель управления) как резервный вариант, если вы потеряете доступ SSH.
  • Документируйте ваш пользовательский порт — легко забыть 2222 при переключении между серверами.

Сопряжение SSH с правильной инфраструктурой хостинга

Безопасная конфигурация SSH настолько же надежна, насколько надежна инфраструктура, на которой она работает. Рассмотрите эти дополнительные услуги:

  • Выделенные серверы — Для рабочих нагрузок, требующих максимальной производительности и полной изоляции оборудования, выделенные серверы дают вам полный контроль над физическим и программным уровнями, включая конфигурацию SSH.
  • SSL сертификаты — Защитите веб-часть ваших приложений с помощью доверенных SSL/TLS сертификатов, дополняя безопасность SSH на серверной части.
  • Регистрация доменов — Регистрируйте и управляйте своим доменом вместе с хостингом, что облегчает настройку элементов управления доступом на основе DNS и имен хостов серверов.

Заключение

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

Мера безопасностиПреимущество
Пользовательский порт SSHИсключает автоматическое сканирование порта 22
Отключен вход rootУдаляет наиболее целевой аккаунт из удаленного доступа
Аутентификация по ключам SSHЗаменяет угадываемые пароли криптографическим доказательством
Отключена аутентификация по паролюПолностью закрывает вектор атак перебора
Fail2BanАвтоматически блокирует постоянных злоумышленников
MaxAuthTries и тайм-аутыОграничивает уязвимость перед медленными или распределенными атаками

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

Независимо от того, запускаете ли вы один сайт WordPress или управляете парком серверов приложений, начало с усиленной конфигурации SSH дает вам контроль. Дополните это надежной инфраструктурой VPS Hosting, сохраняйте резервные копии ключей, и у вас будет безопасная, профессиональная серверная среда, рассчитанная на долгий срок.