Linux

Полный гайд по настройке SSH в Linux: установка и защита

Гайд объясняет, как правильно установить и настроить SSH-сервер в Linux, создать ключи, отключить root-вход и настроить фаервол для безопасного удалённого управления.

Обновлено 27 апреля 2026 г.
10-15 мин
Низкая
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12CentOS Stream 9

Введение / Зачем это нужно

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

Требования / Подготовка

  • Клиент и сервер под управлением Ubuntu 22.04/24.04, Debian 11/12 или CentOS Stream 9.
  • Пользователь с правами sudo на сервере.
  • Открытый порт для управления (по умолчанию 22) или альтернативный, если планируете его сменить.
  • Клиентский доступ к терминалу (Linux/macOS) или OpenSSH в Windows.

Пошаговая инструкция

Шаг 1: Установить и проверить OpenSSH-сервер

Установите пакет и убедитесь, что служба запущена:

# Ubuntu / Debian
sudo apt update
sudo apt install -y openssh-server

# CentOS / RHEL
sudo dnf install -y openssh-server

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

sudo systemctl enable --now sshd
sudo systemctl status sshd

💡 Совет: Если сервер за NAT или фаерволом, откройте порт на брандмауэре до первого подключения.

Шаг 2: Сгенерировать ключи на клиенте

Создайте пару ключей Ed25519 (предпочтительно) или RSA:

# Ed25519 — современный и компактный вариант
ssh-keygen -t ed25519 -C "user@laptop-2026"

# RSA — для совместимости со старыми системами
# ssh-keygen -t rsa -b 4096 -C "user@laptop-2026"
  • По умолчанию ключи сохранятся в ~/.ssh/id_ed25519 и ~/.ssh/id_ed25519.pub.
  • Вы можете задать кодовую фразу для приватного ключа — это повысит безопасность при утечке файла.

Шаг 3: Скопировать публичный ключ на сервер

Простой способ — использовать ssh-copy-id:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server

Если утилиты нет, добавьте ключ вручную:

cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

⚠️ Важно: права 700 для .ssh и 600 для authorized_keys обязательны, иначе сервер может игнорировать ключи.

Шаг 4: Настроить sshd и защитить порт

Откройте конфигурационный файл:

sudo nano /etc/ssh/sshd_config

Рекомендуемые изменения:

Port 22
# При необходимости смените порт, например на 2222

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AllowUsers your_user

Примените и перезапустите службу:

sudo systemctl restart sshd

Ограничьте доступ через фаервол:

# Ubuntu / Debian (UFW)
sudo ufw allow 22/tcp
sudo ufw enable

# CentOS (firewalld)
sudo firewall-cmd --permanent --add-port=22/tcp
sudo firewall-cmd --reload

💡 Совет: Для публичных серверов используйте fail2ban или ограничение по IP, чтобы снизить шум и риск атак.

Проверка результата

Убедитесь, что вход работает без пароля и root заблокирован:

ssh -i ~/.ssh/id_ed25519 your_user@server

Проверьте, что парольный вход отключён:

ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no your_user@server
# Ожидается отказ

Убедитесь, что sshd слушает нужный порт:

sudo ss -tlnp | grep ssh

Возможные проблемы

  • «Permission denied (publickey)» — проверьте права на .ssh и authorized_keys, а также наличие ключа в AllowUsers.
  • Соединение сбрасывается — возможно, порт закрыт на фаерволе или sshd не перезапущен после правок.
  • Потерян ключ — временно включите PasswordAuthentication yes, войдите в консоль и добавьте новый ключ, затем верните настройки.

Готово. Теперь ваш сервер доступен по SSH с минимальной поверхностью атаки, а вход происходит быстро и надёжно.

Часто задаваемые вопросы

Нужно ли отключать вход по паролю после добавления ключа?
Безопасно ли открывать порт 22 для WAN?
Как временно вернуть парольный вход, если потерян ключ?

Полезное

Установить OpenSSH-сервер
Сгенерировать ключи на клиенте
Скопировать публичный ключ на сервер
Настроить sshd и фаервол

Эта статья помогла вам решить проблему?