15%

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

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

Используйте код:

Skills
Начать
30.10.2024
3 +1

Как установить и настроить SSH-сервер на Debian (полное руководство)

SSH (Secure Shell) — один из наиболее фундаментальных протоколов в современном администрировании серверов. Он обеспечивает зашифрованный аутентифицированный канал для удалённого доступа к Linux-серверам и управления ими — что делает его незаменимым инструментом для системных администраторов, разработчиков и всех, кто управляет удалённой машиной. Независимо от того, управляете ли вы средой VPS Хостинга или Выделенным Сервером, правильная установка и защита SSH-сервера — одна из первых задач, которую следует выполнить.

В этом подробном руководстве вы узнаете, как установить OpenSSH на Debian, настроить его безопасно, настроить аутентификацию по ключу и применить передовые меры защиты для предотвращения несанкционированного доступа к серверу.

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

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

  • Сервер на базе Debian (Debian 10 Buster, 11 Bullseye или 12 Bookworm)
  • Непривилегированный пользователь с правами sudo или прямой доступ root для первоначальной настройки
  • Базовые знания командной строки Linux
  • Сетевой доступ к вашему серверу

Шаг 1: Обновите систему и установите OpenSSH Server

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

sudo apt update && sudo apt upgrade -y

Теперь установите пакет OpenSSH server:

sudo apt install openssh-server -y

Менеджер пакетов загрузит и установит OpenSSH вместе со всеми необходимыми зависимостями. После завершения установки служба SSH обычно запускается автоматически.

Проверьте, запущена ли служба SSH

Убедитесь, что служба ssh активна и включена:

sudo systemctl status ssh

Вы должны увидеть вывод, похожий на следующий:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...

Если служба не запущена, запустите её вручную и включите автозапуск при загрузке:

sudo systemctl start ssh
sudo systemctl enable ssh

Шаг 2: Изучите файл конфигурации SSH

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

/etc/ssh/sshd_config

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

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Теперь откройте файл в текстовом редакторе:

sudo nano /etc/ssh/sshd_config

В разделах ниже описаны наиболее важные параметры конфигурации.

Шаг 3: Защитите конфигурацию SSH

3.1 Измените порт SSH по умолчанию (рекомендуется)

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

Найдите следующую строку (она может быть закомментирована символом #):

#Port 22

Раскомментируйте её и измените значение:

Port 2222

> Примечание: Выберите номер порта от 1024 до 65535, который ещё не используется другой службой. Распространённые альтернативы включают 2222, 2200 или 4422. Не забудьте соответствующим образом обновить правила брандмауэра (см. Шаг 5).

3.2 Отключите вход под root (настоятельно рекомендуется)

Разрешение прямого входа под root через SSH является значительным риском безопасности. Если злоумышленник угадает или подберёт пароль root, он получит полный контроль над вашим сервером. Отключите это, найдя и изменив следующую директиву:

PermitRootLogin no

Если вам необходимо выполнять административные задачи, войдите как обычный пользователь и повысьте привилегии с помощью sudo.

3.3 Ограничьте доступ по SSH для определённых пользователей

Вы можете создать белый список конкретных учётных записей пользователей, которым разрешён вход через SSH. Это предотвращает использование несанкционированных или системных учётных записей в качестве точек входа:

AllowUsers your_username deploy_user

Alternatively, you can restrict access by group:

AllowGroups sshusers

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

После того как аутентификация по SSH-ключу заработает (см. Шаг 6), полностью отключите вход по паролю, чтобы устранить векторы атак методом перебора:

PasswordAuthentication no

3.5 Дополнительные директивы защиты

Добавьте или измените следующие строки для более надёжной защиты:

# Disable empty passwords
PermitEmptyPasswords no

# Limit authentication attempts per connection
MaxAuthTries 3

# Set idle session timeout (seconds)
ClientAliveInterval 300
ClientAliveCountMax 2

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only SSH Protocol 2
Protocol 2

# Restrict to specific address family (IPv4 only example)
AddressFamily inet

Соответствующий раздел вашего итогового файла /etc/ssh/sshd_config должен выглядеть примерно так:

Port 2222
PermitRootLogin no
MaxAuthTries 3
PasswordAuthentication no
PermitEmptyPasswords no
AllowUsers your_username
X11Forwarding no
ClientAliveInterval 300
ClientAliveCountMax 2

Шаг 4: Проверьте конфигурацию и перезапустите SSH

Перед перезапуском службы всегда проверяйте файл конфигурации на наличие синтаксических ошибок. Неправильно настроенный sshd_config может заблокировать вам доступ к серверу:

sudo sshd -t

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

sudo systemctl restart ssh

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

sudo systemctl status ssh

> ⚠️ Важно: Прежде чем закрыть текущий сеанс SSH, откройте второе окно терминала и проверьте новую конфигурацию. Таким образом, если что-то пойдёт не так, у вас останется активный сеанс для устранения проблемы.

Шаг 5: Обновите правила брандмауэра

Если вы используете UFW (Uncomplicated Firewall) — стандартный инструмент брандмауэра в Debian — вам необходимо разрешить трафик на новом порту SSH.

Если вы изменили порт на 2222:

sudo ufw allow 2222/tcp
sudo ufw reload

Если вы оставили порт по умолчанию 22:

sudo ufw allow ssh
sudo ufw reload

Проверьте текущий статус брандмауэра:

sudo ufw status verbose

Если UFW ещё не включён, активируйте его (сначала убедитесь, что ваш порт SSH разрешён, чтобы избежать блокировки):

sudo ufw enable

Шаг 6: Настройте аутентификацию по SSH-ключу

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

6.1 Создайте пару SSH-ключей на вашей клиентской машине

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

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

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

При появлении запроса выберите место сохранения (по умолчанию ~/.ssh/id_ed25519) и установите надёжную парольную фразу для дополнительного уровня защиты.

6.2 Скопируйте открытый ключ на ваш сервер

Используйте ssh-copy-id для безопасной передачи вашего открытого ключа на сервер:

ssh-copy-id -p 2222 username@your_server_ip

Эта команда добавляет ваш открытый ключ в файл ~/.ssh/authorized_keys на сервере с правильными разрешениями.

Если ssh-copy-id недоступен, вы можете сделать это вручную:

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

# On the server, add it to authorized_keys:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "your_public_key_here" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

6.3 Проверьте вход по ключу

С вашей клиентской машины подключитесь к серверу:

ssh -p 2222 username@your_server_ip

Вам будет предложено ввести парольную фразу ключа (не пароль учётной записи). После подтверждения вы войдёте в систему безопасно.

6.4 Отключите аутентификацию по паролю

Теперь, когда аутентификация по ключу работает, вернитесь к /etc/ssh/sshd_config и убедитесь, что:

PasswordAuthentication no

Перезапустите SSH для применения изменений:

sudo systemctl restart ssh

Шаг 7: Мониторинг и поддержание безопасности SSH

Установка и настройка SSH — это не разовая задача. Постоянный мониторинг необходим для обнаружения попыток вторжения и поддержания безопасной среды.

Проверьте неудачные попытки входа

sudo journalctl -u ssh | grep "Failed password"

Или используйте lastb для просмотра неудачных попыток входа:

sudo lastb | head -20

Установите Fail2Ban для блокировки атак методом перебора

Fail2Ban отслеживает файлы журналов и автоматически блокирует IP-адреса, проявляющие вредоносное поведение (например, повторные неудачные попытки входа):

sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Создайте локальную конфигурацию jail для SSH:

sudo nano /etc/fail2ban/jail.local

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

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

Перезапустите Fail2Ban для применения изменений:

sudo systemctl restart fail2ban

Поддерживайте OpenSSH в актуальном состоянии

Регулярно обновляйте OpenSSH для устранения известных уязвимостей:

sudo apt update && sudo apt upgrade openssh-server -y

Подключение к вашему SSH-серверу: краткий справочник

СценарийКоманда
Порт по умолчанию (22)ssh username@your_server_ip
Пользовательский портssh -p 2222 username@your_server_ip
Конкретный файл идентификацииssh -i ~/.ssh/id_ed25519 username@your_server_ip
Подробный вывод (отладка)ssh -v username@your_server_ip
Копирование файлов через SSHscp -P 2222 file.txt username@your_server_ip:/path/

Выбор подходящей среды хостинга для SSH

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

  • VPS Хостинг: VPS с cPanel или другими Панелями управления VPS предоставляет полный root SSH-доступ наряду с графическим интерфейсом управления — идеально для пользователей, которым нужны и мощность, и удобство.
  • Выделенные серверы: С Выделенным сервером у вас есть полный контроль на уровне оборудования, что делает настройку SSH ещё более критичной, поскольку вы несёте единоличную ответственность за безопасность машины.
  • Общий хостинг: Планы Общего веб-хостинга обычно предоставляют ограниченный доступ по SSH или не предоставляют его вовсе, поскольку среда используется совместно несколькими пользователями. Если SSH является обязательным требованием, рекомендуется перейти на VPS.

Заключение

Установка и настройка SSH-сервера на Debian — это фундаментальный навык для любого системного администратора или разработчика, работающего с удалёнными Linux-серверами. Следуя этому руководству, вы:

  • ✅ Установили OpenSSH Server на Debian
  • ✅ Защитили конфигурацию SSH, изменив порт по умолчанию, отключив вход под root и ограничив доступ пользователей
  • ✅ Настроили аутентификацию по SSH-ключу для безопасного входа без пароля
  • ✅ Настроили правила брандмауэра для защиты вашего порта SSH
  • ✅ Внедрили Fail2Ban для защиты от атак методом перебора
  • ✅ Установили процедуру мониторинга и обслуживания

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

15%

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

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

Используйте код:

Skills
Начать