Введение / Зачем это нужно
SSH (Secure Shell) — это стандартный инструмент для безопасного удалённого управления сервером. Правильная конфигурация позволяет не только подключаться к системе, но и оградить её от ненужного доступа, автоматизировать задачи и защитить трафик от перехвата. После выполнения этой инструкции вы сможете быстро настроить SSH на любой поддерживаемой дистрибутиве Linux, добавить ключи авторизации и ограничить риски.
Требования / Подготовка
- Поддерживаемые ОС:
Ubuntu 22.04 LTS,Debian 12,CentOS Stream 9(либо другие дистрибутивы на базе glibc). - Права суперпользователя (
sudo). - Установленный сервер OpenSSH (в последних версиях он предустановлен).
- Простой текстовый редактор, например,
nanoилиvi. - SSH-клиент на локальной машине (обычно уже присутствует).
Пошаговая инструкция
Шаг 1: Генерация SSH-ключей
Создайте пару RSA-ключей с закрытым и открытым ключом. Используйте комMAND:
ssh-keygen -t rsa -b 4096 -C "user@host"
Принимайте значения по умолчанию, если только у вас нет особых требований. Приватный ключ сохранится в ~/.ssh/id_rsa, а публичный — в ~/.ssh/id_rsa.pub.
Шаг 2: Редактирование файла sshd_config
Откройте системный конфигурационный файл SSH:
sudo nano /etc/ssh/sshd_config
Добавьте или отредактируйте следующие параметры (пример):
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Subsystem sftp /usr/lib/openssh/sftp-server
Сохраните файл (Ctrl+O, Enter) и выйдите (Ctrl+X). Изменения вступят в силу после перезапуска сервиса.
Шаг 3: Копирование публичного ключа на удалённую машину
Добавьте открытый ключ в список разрешённых на целевом хосте:
cat ~/.ssh/id_rsa.pub | ssh user@host 'cat >> ~/.ssh/authorized_keys'
Если ключ уже существует, новая строка будет добавлена в конец файла.
Шаг 4: Перезапуск SSH-сервера
Примените новую конфигурацию:
sudo systemctl restart ssh
# или на системах SysV init:
# sudo service ssh restart
Проверьте статус:
sudo systemctl status ssh
Шаг 5: Проверка удалённого подключения
Попробуйте подключиться по новому порту:
ssh -p 2222 user@host
Если аутентификация прошла успешно, вы увидите приглашение командной строки. Для автоматического входа без пароля используйте ключ -i при необходимости.
Проверка результата
Убедитесь, что SSH работает корректно:
- Проверка синтаксиса конфигурации:
sshd -t - Просмотр последних логов:
sudo journalctl -u ssh -f
Если сервис не запускается, верните конфигурацию к исходному состоянию с помощью sudo systemctl restart ssh и проверьте права доступа к файлу /etc/ssh/sshd_config.
Возможные проблемы
- Permission denied — обычно означает, что открытый ключ не добавлен или имеет неправильные права. Убедитесь, что
~/.ssh/authorized_keysдоступен только вам (chmod 600 ~/.ssh/authorized_keys). - Connection refused — порт
2222заблокирован файрволом или маршрутизатором. Разблокируйте его вiptables/ufwили проверьте брандмауэр хоста. - SSH не запускается — ошибка в конфигурации. Используйте
sshd -tдля диагностики и верните конфигурацию к предыдущему рабочему состоянию.
Теперь у вас есть полностью функциональный и безопасный SSH-сервер на Linux, готовый к удалённому управлению. Регулярно обновляйте ключи, используйте Two‑Factor Authentication, если это возможно, и следите за логами на предмет подозрительной активности.