Linux

Настройка SSH-сервера на Linux: пошаговая инструкция

Это руководство поможет вам установить и безопасно настроить SSH-сервер на Linux. Вы сможете удалённо управлять сервером по зашифрованному каналу.

Обновлено 8 апреля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 22.04/24.04Debian 11/12CentOS 7/8 StreamRHEL 8/9

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

SSH (Secure Shell) — это стандарт для безопасного удалённого управления серверами и сетевыми устройствами. Настройка SSH-сервера на вашем Linux-компьютере позволяет:

  • Управлять сервером удалённо из любой точки мира через зашифрованный канал.
  • Передавать файлы безопасно с помощью scp или sftp.
  • Запускать команды и скрипты на сервере без физического доступа.

Этот гайд проведёт вас через процесс установки и базовой настройки SSH-сервера на самых популярных дистрибутивах Linux, сделав ваш сервер доступным и защищённым.

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

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

  1. Доступ к серверу с правами sudo (администратора).
  2. Стабильное сетевое подключение и известный IP-адрес или доменное имя сервера.
  3. Клиентская утилита SSH на компьютере, с которого будете подключаться (обычно входит в состав macOS и большинства дистрибутивов Linux; для Windows можно использовать PowerShell или PuTTY).
  4. Базовые знания командной строки Linux.

Установка и базовая настройка

Шаг 1: Установка OpenSSH-сервера

OpenSSH — это стандартная реализация SSH в мире open-source. Установите пакет openssh-server:

Для Ubuntu/Debian:

sudo apt update
sudo apt install openssh-server -y

Для CentOS/RHEL/Rocky:

sudo dnf install openssh-server -y
# Или для CentOS 7:
# sudo yum install openssh-server -y

Эта команда установит демон sshd и все необходимые зависимости.

Шаг 2: Проверка статуса службы

После установки служба должна запуститься автоматически. Проверим это:

sudo systemctl status ssh
# В некоторых дистрибутивах (CentOS) служба может называться `sshd`:
# sudo systemctl status sshd

Вы должны увидеть статус active (running). Если служба не запущена, запустите её и включите автозагрузку:

sudo systemctl enable --now ssh

Шаг 3: Настройка фаервола

Сервер теперь работает, но системный фаервол может блокировать входящие подключения на порт 22. Нужно добавить правило.

Если используется UFW (Ubuntu/Debian по умолчанию):

sudo ufw allow 22/tcp
sudo ufw reload

Если используется firewalld (CentOS/RHEL по умолчанию):

sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

Шаг 4: Проверка подключения с клиента

С этого момента вы можете попробовать подключиться к серверу с другого компьютера в той же сети:

ssh username@ip_адрес_сервера

Где username — ваше имя пользователя на сервере, а ip_адрес_сервера — его локальный или публичный IP. Если всё настроено верно, система запросит пароль пользователя.

Повышение безопасности

Простой пароль — это слабое звено. Давайте настроим более безопасную аутентификацию по SSH-ключам.

Шаг 5: Генерация пары ключей на клиенте

На вашем локальном компьютере (клиенте) выполните команду:

ssh-keygen -t ed25519 -C "ваш_email@example.com"
  • -t ed25519 — современный и безопасный алгоритм.
  • -C — комментарий (обычно email).

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

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

Существует два простых способа:

Способ A (рекомендуется, если уже есть доступ по паролю):

ssh-copy-id username@ip_адрес_сервера

Эта команда сама создаст нужные папки и скопирует ваш публичный ключ (~/.ssh/id_ed25519.pub) в файл ~/.ssh/authorized_keys на сервере.

Способ B (ручной):

  1. На клиенте выведите содержимое публичного ключа: cat ~/.ssh/id_ed25519.pub и скопируйте всю строку.
  2. На сервере (подключившись по паролю) создайте/отредактируйте файл:
    mkdir -p ~/.ssh
    echo "скопированная_строка_ключа" >> ~/.ssh/authorized_keys
    
  3. Установите строгие права доступа:
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

Шаг 7: Тестирование входа по ключу и отключение пароля

  1. Сначала откройте новое окно терминала и попробуйте подключиться заново:
    ssh username@ip_адрес_сервера
    

    Теперь система должна запросить парольную фразу ключа, а не пароль пользователя.
  2. Если вход по ключу работает, отключите аутентификацию по паролю в главном конфигурационном файле сервера. Откройте его для редактирования:
    sudo nano /etc/ssh/sshd_config
    
  3. Найдите и измените/добавьте следующие строки:
    PasswordAuthentication no
    PubkeyAuthentication yes
    
  4. Перезапустите службу SSH, чтобы изменения вступили в силу:
    sudo systemctl restart ssh
    

⚠️ Важно: Перед перезагрузкой убедитесь, что вход по ключу работает! В противном случае вы можете потерять доступ к серверу.

Шаг 8: Дополнительные меры безопасности (опционально)

  • Смена порта SSH: В том же файле /etc/ssh/sshd_config найдите #Port 22, снимите # и измените 22 на другой незанятый порт (например, Port 22222). Не забудьте открыть новый порт в фаерволе.
  • Запрет root-доступа: Установите PermitRootLogin no. Это не даёт подключаться пользователю root напрямую.
  • Ограничение пользователей: Директива AllowUsers your_username разрешит подключение только указанным пользователям.

После каждого изменения конфигурации обязательно перезапускайте службу sudo systemctl restart ssh.

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

  1. Попробуйте подключиться с клиента. Должен запроситься парольная фраза ключа.
  2. Проверьте, что порт открыт: sudo ufw status или sudo firewall-cmd --list-all.
  3. Убедитесь, что служба работает: sudo systemctl is-active ssh.
  4. Попробуйте выполнить удалённую команду: ssh username@server 'ls -la'.

Если всё работает, вы успешно настроили безопасный SSH-сервер.

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

  • Ошибка "Connection refused" или "No route to host": Проверьте, что IP-адрес верный, сервер включён, а фаервол на сервере и в облачной панели (AWS, Google Cloud и т.д.) разрешает трафик на ваш SSH-порт.
  • Ошибка "Permission denied (publickey)": Убедитесь, что публичный ключ корректно скопирован в ~/.ssh/authorized_keys на сервере, а права на папку и файл установлены как 700 и 600 соответственно. Проверьте владельца (должен быть целевой пользователь).
  • После смены порта не могу подключиться: Вы сменили порт на сервере, но не открыли его в фаерволе. Также при подключении нужно явно указать порт: ssh -p 22222 user@server.
  • Служба не запускается после редактирования sshd_config: В конфигурационном файле есть синтаксическая ошибка. Проверьте её командой sudo sshd -t.

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

Почему после настройки SSH не получается подключиться с другого компьютера?
Как сменить стандартный порт SSH с 22 на другой?
Нужно ли отключать вход по паролю, если использую ключи?
Можно ли разрешить доступ одному пользователю, а другому запретить?

Полезное

Установка OpenSSH-сервера
Проверка статуса службы
Настройка файрвола
Создание ключей аутентификации
Размещение публичного ключа на сервере
Оптимизация безопасности (опционально)

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