Введение: Что такое SSH и для чего он нужен?
Определение
SSH (Secure Shell) — это сетевой протокол защищенного удаленного доступа, позволяющий управлять операционной системой и передавать данные по зашифрованному каналу . Он обеспечивает безопасное соединение между клиентом и сервером, гарантируя конфиденциальность и целостность передаваемой информации.
Основные возможности SSH
Протокол SSH предоставляет широкий спектр возможностей для системного администратора:
- Удаленное управление сервером — выполнение команд, запуск приложений, администрирование системы
- Безопасная передача файлов — копирование данных между компьютерами с помощью SCP или SFTP
- Туннелирование и перенаправление портов — создание зашифрованных каналов для других протоколов
- Запуск графических приложений — удаленная работа с X11-приложениями
- Сжатие данных — ускорение передачи информации
Зачем нужен SSH на сервере?
В современной серверной инфраструктуре SSH является стандартом де-факто для удаленного администрирования по следующим причинам:
Реализация OpenSSH
В обеих рассматриваемых операционных системах — Ред ОС и Альт ОС — используется свободная реализация протокола SSH — OpenSSH (OpenBSD Secure Shell) . Это наиболее популярная и активно развиваемая версия SSH, включающая в себя как серверную часть (sshd), так и клиентские утилиты .
Принципы работы протокола SSH
Архитектура клиент-сервер
SSH построен по классической клиент-серверной архитектуре:
- SSH-сервер — программа, устанавливаемая на удаленной машине, к которой осуществляется доступ. Она ожидает входящие соединения, обрабатывает запросы на аутентификацию и выполняет команды от клиента .
- SSH-клиент — программа на компьютере пользователя, которая инициирует соединение, передает команды и отображает результаты .
Этапы установки соединения
Процесс установки SSH-соединения состоит из трех основных этапов :
1. Установка TCP-соединения
Клиент и сервер устанавливают базовое транспортное соединение через протокол TCP. По умолчанию SSH использует 22 порт .
2. Открытие защищенного канала
На этом этапе стороны договариваются о параметрах шифрования:
- Клиент и сервер обмениваются информацией о поддерживаемых версиях протокола
- Стороны согласовывают алгоритмы шифрования, сжатия и обмена ключами (выбираются первые совпадающие в списках предпочтений)
- Происходит проверка ключа хоста сервера (fingerprint). При первом подключении клиент сохраняет этот ключ в файле ~/.ssh/known_hosts
- Генерируется сессионный ключ для симметричного шифрования канала
3. Аутентификация пользователя
После создания защищенного канала сервер проверяет подлинность пользователя. Возможны два основных метода :
- По паролю — классический метод, удобный, но менее безопасный
- По ключам — асимметричное шифрование с парой ключей (приватный и публичный)
Протоколы SSH-1 и SSH-2
OpenSSH-сервер может работать как с протоколом SSH1, так и с SSH2 .
Важно: протокол SSH1 в настоящее время считается небезопасным из-за выявленных уязвимостей, поэтому его использование крайне не рекомендуется. Современные системы по умолчанию используют SSH2.
Установка SSH-сервера в Ред ОС и Альт ОС
Ред ОС
В Ред ОС сервер и клиент OpenSSH обычно уже установлены по умолчанию . Однако при необходимости их можно установить вручную.
Проверка наличия установленных пакетов:
rpm -q openssh-server openssh-clients
Установка:
sudo dnf install openssh-server openssh-clients
Пакет openssh-server содержит серверную часть (демон sshd), а openssh-clients — клиентские утилиты (ssh, scp, sftp) .
Альт ОС
В Альт ОС также по умолчанию установлены и запущены сервер и клиент OpenSSH .
Установка (при необходимости):
sudo apt-get install openssh-server openssh-clients
Для работы с ГОСТ-криптографией в Альт ОС доступны специализированные пакеты:
sudo apt-get install openssh-gostcrypto openssh-clients-gostcrypto openssh-server-gostcrypto
Запуск и управление службой
Проверка статуса:
# Ред ОС и Альт ОС (синтаксис systemd одинаков)
sudo systemctl status sshd
Запуск сервера:
sudo systemctl start sshd
Остановка сервера:
sudo systemctl stop sshd
Перезапуск после изменений конфигурации:
sudo systemctl restart sshd
Автозагрузка при старте системы:
sudo systemctl enable sshd
sudo systemctl disable sshd # для отключения автозагрузки
Структура конфигурационных файлов
Основные отличия в путях
Важно отметить, что в Ред ОС и Альт ОС используются разные пути к конфигурационным файлам SSH:
Файл конфигурации сервера (sshd_config)
Основной файл настройки SSH-сервера — /etc/ssh/sshd_config в Ред ОС и /etc/openssh/sshd_config в Альт ОС. Этот файл должен быть доступен для чтения и редактирования только суперпользователю .
Важные правила работы с конфигурацией:
- После каждого изменения файла необходимо перезапускать ssh-сервер: sudo systemctl restart sshd
- Для большинства дистрибутивов стандартной конфигурации достаточно для базовой работы
- Рекомендуется создавать резервную копию перед изменениями: sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
Основные параметры sshd_config
Рассмотрим наиболее важные параметры конфигурации SSH-сервера.
Настройка сетевых параметров
Port
Определяет порт, на котором сервер ожидает соединения. Можно указывать несколько портов
# Стандартный порт (рекомендуется сменить для безопасности)
Port 22
# Нестандартный порт (пример)
Port 2002
Важно: При смене порта необходимо обновить правила SELinux (в Ред ОС)
sudo semanage port -a -t ssh_port_t -p tcp 2002
ListenAddress
Указывает конкретные IP-адреса, на которых сервер будет принимать подключения
# Слушать на всех адресах (по умолчанию)
ListenAddress 0.0.0.0
# Только на определенном IPv4-адресе с конкретным портом
ListenAddress 192.168.1.10:22
# Только на определенном IPv6-адресе
ListenAddress [2001:db8::1]:22
AddressFamily
Ограничивает семейство IP-адресов .
# Только IPv4
AddressFamily inet
# Только IPv6
AddressFamily inet6
# Любые (по умолчанию)
AddressFamily any
UseDNS
Определяет, нужно ли серверу проверять имя хоста клиента через обратный DNS-запрос .
# Отключить проверку DNS (рекомендуется для ускорения подключения)
UseDNS no
Настройки времени и таймаутов
LoginGraceTime
Время ожидания регистрации пользователя в системе (в секундах). Если пользователь не успел войти за это время, сеанс обрывается .
# 60 секунд
LoginGraceTime 60
# Бесконечное ожидание (не рекомендуется)
LoginGraceTime 0
TCPKeepAlive
Указывает, нужно ли системе посылать TCP-сообщения клиенту для поддержания соединения .
TCPKeepAlive yes
ClientAliveInterval и ClientAliveCountMax
Более безопасная альтернатива TCPKeepAlive — отправка зашифрованных сообщений клиенту .
# Интервал отправки сообщений (в секундах)
ClientAliveInterval 300
# Максимальное количество неподтвержденных сообщений
ClientAliveCountMax 3
Настройки аутентификации
PermitRootLogin
Разрешает или запрещает вход для суперпользователя root .
# Полностью запретить вход для root (рекомендуется)
PermitRootLogin no
# Разрешить только вход по ключам
PermitRootLogin prohibit-password
# Разрешить вход (небезопасно!)
PermitRootLogin yes
Рекомендация: Запретите прямой вход для root и используйте обычного пользователя с правами sudo .
PasswordAuthentication
Включает или отключает аутентификацию по паролю .
# Отключить парольную аутентификацию (рекомендуется при использовании ключей)
PasswordAuthentication no
# Включить парольную аутентификацию (менее безопасно)
PasswordAuthentication yes
PubkeyAuthentication
Включает аутентификацию по открытым ключам — наиболее безопасный метод .
PubkeyAuthentication yes
PermitEmptyPasswords
Запрещает вход с пустым паролем .
PermitEmptyPasswords no
MaxAuthTries
Максимальное число попыток аутентификации для одного соединения .
MaxAuthTries 3
Настройка безопасности SSH
Базовые рекомендации по безопасности
Сам по себе неправильно настроенный SSH-сервер представляет серьезную уязвимость, так как злоумышленник может получить практически неограниченный доступ к системе . Вот основные рекомендации:
1. Смена стандартного порта
Изменение порта с 22 на нестандартный помогает избежать массовых атак ботов, сканирующих стандартные порты .
# В /etc/ssh/sshd_config (или /etc/openssh/sshd_config)
Port 2222
2. Запрет прямого входа для root
PermitRootLogin no
3. Отключение аутентификации по паролю (при использовании ключей)
PasswordAuthentication no
PubkeyAuthentication yes
4. Ограничение количества попыток и времени
MaxAuthTries 3
LoginGraceTime 60
5. Ограничение списка пользователей и групп
# Разрешить вход только конкретным пользователям
AllowUsers admin user1 user2
# Разрешить вход только членам определенных групп
AllowGroups sshusers admins
Дополнительные меры защиты
Настройка MaxStartups
Ограничивает количество одновременных "ожидающих" соединений (когда пароль еще не введен), помогая бороться с брутфорс-атаками .
MaxStartups 3:60:10
Пояснение: Разрешены только 3 ожидающих соединения, каждое следующее будет сброшено с вероятностью 60%, начиная с 10-го .
Защита с помощью fail2ban
Fail2ban анализирует логи и временно блокирует IP-адреса, с которых происходит много неудачных попыток входа.
# Установка fail2ban
# Ред ОС
sudo dnf install fail2ban
# Альт ОС
sudo apt-get install fail2ban
# Создание локальной конфигурации
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable --now fail2ban
Пример защищенной конфигурации
# Базовые настройки
Port 2222
AddressFamily inet
UseDNS no
# Ограничение времени и попыток
LoginGraceTime 60
MaxAuthTries 3
MaxSessions 10
MaxStartups 3:60:10
# Настройки поддержания соединения
ClientAliveInterval 300
ClientAliveCountMax 2
TCPKeepAlive no
# Аутентификация
PermitRootLogin no
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no
# Ограничение пользователей
AllowUsers adminuser
AllowGroups sshusers
# Логирование
SyslogFacility AUTH
LogLevel VERBOSE
Настройка баннеров в SSH
Что такое SSH-баннер?
Баннер в контексте SSH — это текстовое сообщение, которое отображается пользователю до или после успешной аутентификации. Баннеры выполняют несколько важных функций:
- Предупреждение о конфиденциальности — информирование о том, что доступ к системе ограничен и ведется мониторинг
- Юридическое предупреждение — уведомление о правовых последствиях несанкционированного доступа
- Информационные сообщения — уведомления о плановых работах, правилах использования
- Идентификация системы — информация о принадлежности сервера к определенной организации
Типы баннеров в SSH
В OpenSSH существует два типа баннеров:
Настройка баннера до аутентификации (Banner)
Этот баннер отображается перед запросом пароля и виден всем, кто пытается подключиться, даже до ввода учетных данных.
Шаг 1: Создание файла баннера
Создайте текстовый файл с содержимым баннера. Обычно он располагается в /etc/ssh/ или /etc/:
sudo nano /etc/ssh/banner
Пример юридического предупреждения:
Пример информационного баннера:
Шаг 2: Указание файла баннера в конфигурации SSH
Отредактируйте конфигурационный файл SSH-сервера:
# Ред ОС
sudo nano /etc/ssh/sshd_config
# Альт ОС
sudo nano /etc/openssh/sshd_config
Добавьте или раскомментируйте строку:
# Указание пути к файлу баннера
Banner /etc/ssh/banner
Шаг 3: Перезапуск SSH-сервера
sudo systemctl restart sshd
Проверка работы баннера
Подключитесь к серверу и убедитесь, что баннер отображается:
ssh user@server-ip
Настройка баннера после аутентификации (motd)
motd (Message of the Day) — это сообщение, отображаемое пользователю после успешного входа в систему. Это стандартный механизм Unix, не специфичный для SSH.
Файл /etc/motd
Самый простой способ — отредактировать файл /etc/motd:
sudo nano /etc/motd
Пример содержимого:
Добро пожаловать на сервер!
================================
Текущая дата: $(date)
Загруженность системы: $(uptime)
================================
Пожалуйста, соблюдайте правила безопасности.
Важно: В некоторых дистрибутивах (включая Ред ОС) файл /etc/motd может быть симлинком или перезаписываться при обновлениях. Проверьте это командой ls -la /etc/motd.
Динамический motd через скрипты
Более гибкий подход — использование динамического баннера через скрипты. Для этого нужно:
- Убедиться, что в /etc/pam.d/sshd есть строка:
session optional pam_motd.so motd=/run/motd.dynamic
session optional pam_motd.so
2. Скрипты для генерации динамического motd обычно находятся в /etc/update-motd.d/ (в Ubuntu-подобных системах) или настраиваются через PAM.
Отключение motd для определенных пользователей
Можно отключить отображение motd для конкретных пользователей, создав в их домашнем каталоге пустой файл:
touch ~/.hushlogin
Настройка баннера при подключении через SFTP/SCP
При использовании SFTP или SCP баннеры ведут себя по-разному:
- SCP — обычно игнорирует баннеры для сохранения целостности передаваемых данных
- SFTP — может отображать баннер в интерактивном режиме
Для управления этим поведением существуют параметры клиента:
# Отключение проверки баннера при SFTP (в клиентской конфигурации)
sftp -o BatchMode=yes user@server
Специальные символы и форматирование в баннерах
В баннерах можно использовать различные символы для улучшения читаемости:
# Простое форматирование с рамкой
echo "========================================"
echo "= СИСТЕМНОЕ СООБЩЕНИЕ ="
echo "========================================"
# Использование Unicode-символов (если терминал поддерживает)
echo "🔒 БЕЗОПАСНЫЙ ДОСТУП 🔒"
echo "📅 $(date +%d.%m.%Y)"
# Цветовое оформление (используйте escape-последовательности)
echo -e "\e[31m⚠️ ВНИМАНИЕ\e[0m — красное предупреждение"
Отключение motd для определенных пользователей
Можно отключить отображение motd для конкретных пользователей, создав в их домашнем каталоге пустой файл:
bash
touch ~/.hushlogin
Важно: Не все терминалы корректно отображают Unicode и цвета. Для максимальной совместимости рекомендуется использовать только ASCII-символы.
Правовые аспекты использования баннеров
В корпоративной среде баннеры имеют юридическое значение:
- Предупреждение о мониторинге — информирует пользователей о том, что их действия записываются
- Согласие с условиями — продолжение работы после показа баннера может рассматриваться как согласие с условиями
- Доказательство в суде — при расследовании инцидентов баннер служит доказательством предупреждения
Рекомендации для юридически значимого баннера:
- Укажите, что доступ разрешен только авторизованным лицам
- Сообщите о ведении мониторинга и логирования
- Предупредите о последствиях несанкционированного доступа
- Добавьте контактную информацию для связи
Примеры баннеров для разных ситуаций
Для production-сервера:
Для тестового сервера:
Для сервера с особыми требованиями безопасности:
Управление баннерами в Альт ОС с помощью control
В Альт ОС доступна утилита control для управления настройками SSH, включая баннеры:
# Проверка текущего статуса баннера
control sshd-banner
# Включение баннера (если файл существует)
control sshd-banner enabled
# Отключение баннера
control sshd-banner disabled
# Установка пользовательского файла баннера
control sshd-banner /etc/openssh/custom-banner
Проверка и отладка баннеров
Проверка синтаксиса конфигурации
# Ред ОС
sudo sshd -t -f /etc/ssh/sshd_config
# Альт ОС
sudo sshd -t -f /etc/openssh/sshd_config
Просмотр логов при проблемах с баннером
# Поиск ошибок, связанных с баннером
sudo journalctl -u sshd | grep -i banner
Тестирование отображения баннера
# Подключение с verbose-режимом покажет, отправляется ли баннер
ssh -v user@server | grep -i banner
Ограничения и особенности баннеров
- Размер баннера — некоторые старые SSH-клиенты могут обрезать длинные баннеры
- Несовместимость с некоторыми клиентами — отдельные реализации SSH могут игнорировать баннеры
- Проблемы с кодировкой — убедитесь, что файл баннера сохранен в UTF-8 или ASCII
- SCP/SFTP в пакетном режиме — могут не отображать баннеры для автоматизации
Аутентификация по ключам
Аутентификация на основе SSH-ключей является наиболее безопасным и удобным способом входа на сервер .
Принцип работы ключевой аутентификации
Используется асимметричное шифрование с парой ключей :
- Приватный ключ (id_ed25519, id_rsa) — хранится на клиентской машине в секрете. Никому не передается .
- Публичный ключ (id_ed25519.pub, id_rsa.pub) — копируется на сервер и служит для проверки подлинности пользователя.
При подключении клиент доказывает серверу, что владеет приватным ключом, соответствующим публичному ключу в файле authorized_keys.
Генерация ключей на клиенте
Ключи генерируются на компьютере, с которого будет выполняться подключение (клиент) .
Современные типы ключей:
- ed25519 — рекомендуется, современный алгоритм с высокой безопасностью и производительностью
- RSA (2048 или 4096 бит) — классический, широко поддерживаемый
# Генерация ключа ed25519 (рекомендуется)
ssh-keygen -t ed25519
# Генерация ключа RSA 4096 бит
ssh-keygen -t rsa -b 4096
В процессе генерации система спросит:
- Путь для сохранения ключа — по умолчанию ~/.ssh/id_ed25519 (можно нажать Enter)
- Парольную фразу (passphrase) — дополнительная защита ключа. Рекомендуется указать, чтобы даже при краже файла ключа злоумышленник не смог его использовать .
После генерации в каталоге ~/.ssh/ появятся два файла :
- id_ed25519 — секретный ключ (никому не передавать!)
- id_ed25519.pub — публичный ключ
Копирование публичного ключа на сервер
Способ 1: ssh-copy-id (рекомендуемый)
Утилита автоматически добавляет публичный ключ в файл ~/.ssh/authorized_keys на сервере .
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip
Способ 2: Ручное копирование
Если ssh-copy-id недоступна, можно скопировать ключ вручную:
# На клиенте просмотреть содержимое публичного ключа
cat ~/.ssh/id_ed25519.pub
# На сервере (если нет входа по паролю, потребуется другой способ)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "скопированный_публичный_ключ" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
Использование ssh-agent
ssh-agent — это менеджер ключей, который хранит расшифрованные ключи в памяти на время сеанса, избавляя от необходимости каждый раз вводить парольную фразу .
# Запуск ssh-agent (обычно запускается автоматически при графическом входе)
eval $(ssh-agent)
# Добавление ключа в агент (будет запрошена passphrase)
ssh-add
# Добавление конкретного ключа
ssh-add ~/.ssh/id_ed25519
# Просмотр добавленных ключей
ssh-add -l
После добавления ключа в агент подключение будет происходить без ввода пароля .
Включение ключевой аутентификации на сервере
В файле конфигурации сервера должны быть включены соответствующие параметры :
# /etc/ssh/sshd_config или /etc/openssh/sshd_config
PubkeyAuthentication yes
Управление доступом пользователей и групп
OpenSSH предоставляет гибкие возможности для ограничения доступа к серверу на основе пользователей и групп .
Директивы управления доступом
Порядок обработки: DenyUsers → AllowUsers → DenyGroups → AllowGroups .
Примеры использования
Разрешить доступ только конкретным пользователям
AllowUsers admin john alice
Разрешить доступ только членам определенных групп
AllowGroups sshusers admins
Запретить доступ конкретному пользователю
DenyUsers baduser
Комбинирование с ограничением по хосту
Можно указывать пользователя в формате user@host для разграничения доступа с определенных хостов :
# Разрешить admin только с конкретного IP
AllowUsers admin@192.168.1.100
Управление доступом в Альт ОС через control-sshd
В Альт ОС доступен удобный инструмент control для управления настройками sshd :
# Включить контроль доступа по группам
control sshd-allow-groups enabled
# Отключить аутентификацию по паролю
control sshd-password-auth disabled
# Установить режим аутентификации для root
control sshd-permit-root-login without_password # только по ключам
control sshd-permit-root-login disabled # запрещен
control sshd-permit-root-login enabled # разрешен
После изменений необходимо перезапустить сервер:
systemctl restart sshd
Настройка SSH-клиента {#настройка-клиента}
Базовое подключение
Самый простой способ подключения к серверу:
# Если имя пользователя на сервере совпадает с локальным
ssh server-ip
# Если имя пользователя отличается
ssh user@server-ip
# Подключение к нестандартному порту
ssh -p 2222 user@server-ip
Конфигурационные файлы клиента
Настройки клиента SSH делятся на два уровня :
- Глобальные — /etc/ssh/ssh_config (Ред ОС) или /etc/openssh/ssh_config (Альт ОС), применяются ко всем пользователям
- Пользовательские — ~/.ssh/config, применяются к конкретному пользователю
Создание алиасов (псевдонимов)
Файл ~/.ssh/config позволяет создавать удобные алиасы для частых подключений :
# Простой алиас
Host myserver
HostName 192.168.1.100
User admin
Port 22
# Сложный алиас с дополнительными параметрами
Host work
HostName server.company.com
User ivanov
Port 2222
IdentityFile ~/.ssh/work_key
Compression yes
ForwardX11 yes
После создания такого файла можно подключаться просто командой:
ssh work
вместо полной команды:
ssh -i ~/.ssh/work_key -p 2222 [email protected]
Режим отладки
Для диагностики проблем можно использовать опцию -v (и более: -vv, -vvv) :
ssh -v user@server
Это покажет подробную информацию о процессе подключения, включая согласованные алгоритмы шифрования .
ГОСТ-криптография в Альт ОС
В Альт ОС поддерживаются алгоритмы ГОСТ для шифрования . Для их использования в клиентском конфигурационном файле нужно указать соответствующие параметры:
# /etc/openssh/ssh_config или ~/.ssh/config
Ciphers grasshopper-ctr@altlinux.org
MACs grasshopper-mac@altlinux.org,hmac-streebog-512@altlinux.org
В режиме отладки можно увидеть используемый алгоритм :
debug1: kex: server->client cipher: grasshopper-ctr@altlinux.org MAC: grasshopper-mac@altlinux.org
Дополнительные возможности SSH
Передача файлов
SCP (Secure Copy)
Копирование файлов по SSH :
# Копирование с локального на удаленный
scp localfile.txt user@server:/home/user/
# Копирование с удаленного на локальный
scp user@server:/home/user/remotefile.txt .
# Копирование с указанием порта
scp -P 2222 localfile.txt user@server:/home/user/
SFTP (SSH File Transfer Protocol)
Интерактивная сессия для работы с файлами :
sftp user@server
# Внутри sftp можно использовать команды: ls, cd, get, put, mkdir и т.д.
Проброс портов (туннелирование)
SSH позволяет создавать зашифрованные туннели для других протоколов:
# Локальный проброс порта
# Весь трафик на локальный порт 8080 будет уходить через сервер на example.com:80
ssh -L 8080:example.com:80 user@server
# Удаленный проброс порта
ssh -R 8080:localhost:80 user@server
Запуск графических приложений (X11 Forwarding)
SSH может перенаправлять X11-соединения, позволяя запускать графические приложения на сервере и отображать их на клиенте .
На сервере в sshd_config:
X11Forwarding yes
На клиенте при подключении:
ssh -X user@server
# После подключения можно запустить, например, gedit
gedit
Монтирование удаленной директории (sshfs)
С помощью sshfs можно монтировать удаленный каталог как локальную файловую систему .
# Установка sshfs
# Ред ОС: sudo dnf install sshfs
# Альт ОС: sudo apt-get install sshfs
# Монтирование
sshfs user@server:/remote/path /local/mount/point
# Размонтирование
fusermount -u /local/mount/point
Диагностика и устранение проблем
Проверка статуса службы
sudo systemctl status sshd
Проверка конфигурационного файла
Перед перезапуском полезно проверить синтаксис конфигурации:
# Ред ОС
sudo sshd -t -f /etc/ssh/sshd_config
# Альт ОС
sudo sshd -t -f /etc/openssh/sshd_config
Просмотр логов
# Просмотр логов SSH (Ред ОС - /var/log/secure, Альт ОС - /var/log/auth.log)
sudo journalctl -u sshd -f
# Просмотр неудачных попыток входа
sudo journalctl -u sshd | grep "Failed"
Типичные проблемы и решения
1. "Connection refused" (Отказ в соединении)
Причины:
- Сервер SSH не запущен
- Порт заблокирован фаерволом
- Сервер слушает на другом порту или интерфейсе
Решение:
# Проверить статус службы
sudo systemctl status sshd
# Проверить, на каких портах слушает sshd
sudo ss -tlnp | grep ssh
# Проверить правила фаервола
sudo firewall-cmd --list-all
2. "Permission denied" (Отказ в доступе)
Причины:
- Неправильный пароль или ключ
- Неправильные права на файлы ключей
- Пользователь не в списке разрешенных
Решение:
# Проверить права на ~/.ssh и authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
# Проверить настройки AllowUsers/AllowGroups
sudo grep -E "Allow(Users|Groups)" /etc/ssh/sshd_config
3. Медленное подключение
Причина: Включенная проверка DNS (UseDNS)
Решение:
# В sshd_config
UseDNS no
4. Предупреждение об изменении ключа хоста
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Причина: Изменился ключ сервера (переустановка системы, подмена сервера) .
Решение: Удалить старый ключ из ~/.ssh/known_hosts:
ssh-keygen -R server-ip
Сохранение ключей хоста при переустановке
Чтобы избежать предупреждений об изменении ключа после переустановки системы, необходимо сохранить файлы ключей хоста :
# Создать резервную копию ключей перед переустановкой
sudo cp /etc/ssh/ssh_host*key* /backup/location/
# Восстановить после переустановки
sudo cp /backup/location/ssh_host*key* /etc/ssh/
Заключение
Сравнение Ред ОС и Альт ОС
Рекомендации по безопасной настройке
- Обязательно отключите прямой вход для root: PermitRootLogin no
- Используйте ключевую аутентификацию вместо паролей: PasswordAuthentication no
- Смените стандартный порт для снижения количества автоматических атак
- Ограничьте список пользователей, которым разрешен доступ
- Используйте fail2ban для блокировки брутфорс-атак
- Регулярно обновляйте пакет OpenSSH
- Следите за логами и анализируйте подозрительную активность
Проверочный список после настройки
- SSH-сервер запущен и добавлен в автозагрузку
- Вход по паролю отключен (если используются ключи)
- Вход для root запрещен
- Изменен стандартный порт (опционально)
- Настроены ограничения на пользователей/группы
- Созданы и скопированы ключи для администраторов
- Проверена работа подключения с клиента
- Настроено резервное копирование ключей хоста
- Установлен и настроен fail2ban
Полезные ресурсы
- man-страницы: man sshd_config, man ssh_config, man ssh
SSH является незаменимым инструментом в работе любого системного администратора. Правильная настройка SSH-сервера обеспечивает не только удобство удаленного управления, но и безопасность всей серверной инфраструктуры. Уделите время изучению всех возможностей этого мощного протокола, и вы сможете эффективно и безопасно администрировать свои серверы на Ред ОС и Альт ОС.