Введение / Зачем это нужно
OpenSSH сервер (sshd) — это стандартное решение для безопасного удалённого управления серверами по протоколу SSH. После настройки вы сможете:
- Подключаться к серверу через зашифрованный канал.
- Использовать SSH-ключи вместо паролей для усиления безопасности.
- Перенаправлять порты, копировать файлы (SCP/SFTP) и туннелировать трафик.
- Ограничивать доступ по IP или пользователям.
Этот гайд подходит для большинства современных Linux-дистрибутивов на базе systemd (Ubuntu, Debian, CentOS, RHEL).
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к серверу с правами sudo (или root).
- Сервер подключён к сети и вы знаете его IP-адрес.
- Установлен менеджер пакетов (
apt,yum/dnf). - (Опционально) Сгенерирован SSH-ключ на клиенте, если планируете использовать аутентификацию по ключу.
Шаг 1: Установка OpenSSH сервера
Установите пакет openssh-server:
Для Ubuntu/Debian:
sudo apt update
sudo apt install openssh-server -y
Для CentOS/RHEL 8+:
sudo dnf install openssh-server -y
Пакет автоматически создаст службу sshd и конфигурационный файл /etc/ssh/sshd_config.
Шаг 2: Проверка статуса службы SSH
Убедитесь, что служба запущена и включена в автозагрузку:
sudo systemctl status sshd
Если служба не активна, запустите её:
sudo systemctl start sshd
sudo systemctl enable sshd
Шаг 3: Базовая настройка SSH сервера
Редактируйте основной конфигурационный файл:
sudo nano /etc/ssh/sshd_config
Рекомендуемые настройки для повышения безопасности:
# Измените порт (опционально, но рекомендуется)
Port 2222
# Запретите вход root
PermitRootLogin no
# Разрешите аутентификацию по ключу
PubkeyAuthentication yes
# Запретите аутентификацию по паролю (если используете ключи)
PasswordAuthentication no
# Ограничьте количество попыток входа
MaxAuthTries 3
# Укажите версию протокола 2
Protocol 2
# (Опционально) Разрешите только конкретных пользователей
# AllowUsers alice bob
⚠️ Важно: Не закрывайте текущую сессию SSH до проверки нового подключения. Ошибки в конфиге могут заблокировать доступ.
Шаг 4: Настройка фаервола
Если на сервере активен фаервол (например, ufw или firewalld), откройте порт SSH:
Для UFW (Ubuntu/Debian):
sudo ufw allow 2222/tcp # если меняли порт, укажите ваш
sudo ufw reload
Для firewalld (CentOS/RHEL):
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
Шаг 5: Перезапуск службы SSH
Примените изменения конфигурации:
sudo systemctl restart sshd
Проверьте синтаксис конфига перед перезапуском (чтобы избежать ошибок):
sudo sshd -t
Если команда ничего не выводит — синтаксис корректен.
Шаг 6: Проверка подключения
С локальной машины (или другого сервера) попробуйте подключиться:
ssh -p 2222 username@server_ip
Где:
2222— ваш порт (если не меняли, используйте22).username— ваше имя пользователя на сервере.server_ip— внешний IP сервера.
Если подключение прошло успешно, вы увидите приглашение оболочки сервера.
Возможные проблемы
Ошибка Connection refused
- Причина: Служба
sshdне запущена или порт не открыт в фаерволе. - Решение:
- Проверьте статус службы:
sudo systemctl status sshd. - Убедитесь, что порт открыт:
sudo ufw statusилиsudo firewall-cmd --list-all. - Проверьте, слушает ли
sshdна порту:sudo ss -tlnp | grep sshd.
- Проверьте статус службы:
Ошибка Permission denied (publickey,password)
- Причина: Неверный ключ, запрещён парольный вход или пользователь не в
AllowUsers. - Решение:
- Убедитесь, что публичный ключ добавлен в
~/.ssh/authorized_keysна сервере. - Проверьте настройки
PasswordAuthenticationиPubkeyAuthenticationвsshd_config. - Если используется
AllowUsers, добавьте нужного пользователя.
- Убедитесь, что публичный ключ добавлен в
Служба не запускается после редактирования конфига
- Причина: Синтаксическая ошибка в
sshd_config. - Решение: Выполните
sudo sshd -tдля проверки. Исправьте указанную строку.
Не могу подключиться после смены порта
- Причина: Фаервол не настроен на новый порт или клиент пытается подключиться к старому.
- Решение: Укажите порт явно в команде
ssh -p 2222 ...и откройте его в фаерволе.