15%

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

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

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

Skills
Начать
29.10.2024

Как установить и настроить SSH на Linux: полное руководство по безопасности на 2025 год

SSH — это единственная наиболее критически важная точка доступа на вашем сервере. Неправильно настроенная конфигурация SSH может быть взломана менее чем за пять минут автоматизированными ботами, сканирующими интернет. Независимо от того, управляете ли вы средой VPS Hosting, физическим сервером или облачным экземпляром, правильная защита SSH с первого дня является обязательным условием.

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

Что такое SSH и почему это важно?

SSH (Secure Shell) — это криптографический сетевой протокол, который позволяет пользователям безопасно подключаться к удалённой системе через незащищённую сеть, например интернет. Все данные, передаваемые между клиентом и сервером, полностью зашифрованы, что делает его отраслевым стандартом для удалённого управления серверами.

По умолчанию SSH работает на порту 22 и поддерживает:

  • Удалённый вход на серверы и виртуальные машины
  • Безопасную передачу файлов через SCP и SFTP
  • Удалённое выполнение команд и автоматизацию с помощью скриптов
  • Перенаправление портов и туннелирование для безопасной маршрутизации трафика
  • Перенаправление X11 для доступа к графическим приложениям

SSH — это ваш основной административный интерфейс. Относитесь к нему соответственно.

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

Большинство современных дистрибутивов Linux поставляются с предустановленным OpenSSH. Если он отсутствует, установите его с помощью соответствующего менеджера пакетов для вашего дистрибутива.

Ubuntu / Debian

sudo apt update
sudo apt install openssh-server -y

CentOS / RHEL / AlmaLinux / Rocky Linux

sudo yum install openssh-server -y

Fedora

sudo dnf install openssh-server -y

Arch Linux

sudo pacman -S openssh

После установки доступны как сервер OpenSSH (sshd), так и клиент OpenSSH, что позволяет принимать входящие подключения и подключаться к другим удалённым серверам.

Шаг 2: Запуск и включение службы SSH

После установки необходимо запустить демон SSH (sshd) и настроить его автоматический запуск при загрузке системы.

Запуск службы SSH

sudo systemctl start ssh

Включение SSH для запуска при загрузке

sudo systemctl enable ssh

Проверка работы службы

sudo systemctl status ssh

При нормальной работе вывод покажет active (running) зелёным цветом. Если вы видите ошибки, проверьте системные журналы с помощью journalctl -xe для получения диагностических сведений.

Шаг 3: Понимание файла конфигурации SSH

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

/etc/ssh/sshd_config

Этот файл управляет всем — портом прослушивания, методами аутентификации, разрешёнными пользователями, ограничениями входа и многим другим. Всегда создавайте резервную копию перед внесением изменений:

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

Откройте файл в предпочитаемом текстовом редакторе:

sudo nano /etc/ssh/sshd_config

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

sudo sshd -t

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

sudo systemctl restart ssh

Шаг 4: Основные изменения конфигурации SSH

4.1 Изменение порта SSH по умолчанию

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

Найдите эту строку в sshd_config:

#Port 22

Раскомментируйте её и задайте пользовательский порт (выберите число от 1024 до 65535, которое ещё не используется):

Port 2222

Сохраните файл, проверьте и перезапустите SSH:

sudo sshd -t && sudo systemctl restart ssh

> Важно: Немедленно обновите правила брандмауэра после изменения порта (см. Шаг 6). Несоблюдение этого требования заблокирует вам доступ к серверу.

4.2 Отключение входа root через SSH

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

Найдите эту директиву:

PermitRootLogin yes

Измените её на:

PermitRootLogin no

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

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

Аутентификация на основе паролей изначально уязвима для атак методом перебора. Пары SSH-ключей — математически связанная комбинация открытого и закрытого ключей — несравнимо более безопасны.

Найдите и задайте следующие директивы:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

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

4.4 Дополнительные директивы усиления защиты

Добавьте или измените эти параметры в sshd_config для усиленной производственной конфигурации:

# Restrict login to specific users (replace 'youruser' with actual usernames)
AllowUsers youruser

# Disconnect idle sessions after 5 minutes
ClientAliveInterval 300
ClientAliveCountMax 2

# Limit authentication attempts per connection
MaxAuthTries 3

# Disable empty passwords
PermitEmptyPasswords no

# Disable X11 forwarding if not needed
X11Forwarding no

# Use only modern, secure protocol version
Protocol 2

# Restrict SSH to specific network interface (optional, replace with your IP)
ListenAddress 0.0.0.0

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

Аутентификация по SSH-ключам заменяет пароли криптографическим подтверждением личности. Вот как правильно её настроить.

Шаг 5.1: Генерация пары ключей на локальной машине

Выполните эту команду на вашей локальной рабочей станции (не на сервере):

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

> Почему Ed25519? Ed25519 — это современный алгоритм на основе эллиптических кривых, который быстрее, безопаснее и создаёт более короткие ключи, чем более старый алгоритм RSA. Это рекомендуемый выбор в 2025 году.

Если ваша система или инструментарий требуют RSA по соображениям совместимости, используйте 4096-битный ключ:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Вам будет предложено:

  1. Выбрать путь к файлу (нажмите Enter, чтобы принять значение по умолчанию ~/.ssh/id_ed25519)
  2. Задать необязательную парольную фразу (настоятельно рекомендуется — она шифрует ваш закрытый ключ в состоянии покоя)

В результате создаются два файла:

    ~/.ssh/id_ed25519 — Ваш закрытый ключ. Никогда не передавайте его. Никогда не копируйте на сервер.
    ~/.ssh/id_ed25519.pub — Ваш открытый ключ. Именно он устанавливается на серверах.
    
    Шаг 5.2: Копирование открытого ключа на сервер
    Используйте ssh-copy-id для безопасной передачи вашего открытого ключа на удалённый сервер:
    ssh-copy-id -p 2222 username@your_server_ip
    Замените username именем учётной записи на сервере, а your_server_ip — фактическим IP-адресом.
    Эта команда автоматически добавляет ваш открытый ключ в ~/.ssh/authorized_keys на сервере с правильными разрешениями.
    Ручной метод (если ssh-copy-id недоступен):
    cat ~/.ssh/id_ed25519.pub | ssh username@your_server_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
    Шаг 5.3: Проверка входа на основе ключей
    Перед отключением аутентификации по паролю убедитесь, что вход на основе ключей работает:
    ssh -p 2222 username@your_server_ip
    Если вы успешно подключились без запроса пароля (или только с запросом парольной фразы ключа), аутентификация на основе ключей работает правильно. Теперь вы можете безопасно отключить аутентификацию по паролю в sshd_config.
    Шаг 6: Настройка брандмауэра для SSH
    Брандмауэр — это ваша первая линия защиты. Всегда настраивайте его так, чтобы разрешать только используемый вами SSH-порт.
    Использование UFW (Ubuntu / Debian)
    # Allow your custom SSH port
    sudo ufw allow 2222/tcp
    
    # Enable the firewall
    sudo ufw enable
    
    # Verify the rules
    sudo ufw status verbose
    Использование firewalld (CentOS / RHEL / Fedora)
    # Add the custom SSH port
    sudo firewall-cmd --permanent --add-port=2222/tcp
    
    # Remove the default port 22 (optional, after confirming new port works)
    sudo firewall-cmd --permanent --remove-service=ssh
    
    # Reload firewall rules
    sudo firewall-cmd --reload
    Ограничение доступа SSH по IP-адресу
    Для максимальной безопасности ограничьте доступ SSH только известными, доверенными IP-адресами:
    # UFW example: allow SSH only from a specific IP
    sudo ufw allow from 203.0.113.10 to any port 2222 proto tcp
    Это особенно эффективно на Dedicated Servers, где вы управляете всем административным доступом с фиксированного офисного или VPN IP-диапазона.
    Шаг 7: Расширенные меры безопасности
    7.1 Установка и настройка Fail2Ban
    Fail2Ban отслеживает файлы журналов SSH и автоматически блокирует IP-адреса, проявляющие признаки активности методом перебора.
    # Install Fail2Ban
    sudo apt install fail2ban -y   # Ubuntu/Debian
    sudo yum install fail2ban -y   # CentOS/RHEL
    
    # Create a local configuration file
    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    Отредактируйте /etc/fail2ban/jail.local и настройте тюрьму SSH:
    [sshd]
    enabled = true
    port    = 2222
    filter  = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime  = 3600
    findtime = 600
    Запустите и включите Fail2Ban:
    sudo systemctl start fail2ban
    sudo systemctl enable fail2ban
    7.2 Использование файла конфигурации SSH для управления на стороне клиента
    На вашей локальной машине создайте или отредактируйте ~/.ssh/config для упрощения подключений и применения параметров безопасности:
    Host myserver
        HostName your_server_ip
        User youruser
        Port 2222
        IdentityFile ~/.ssh/id_ed25519
        ServerAliveInterval 60
        ServerAliveCountMax 3
    С этой конфигурацией вы можете подключиться, просто введя:
    ssh myserver
    7.3 Двухфакторная аутентификация (2FA) для SSH
    Для сред, требующих наивысшего уровня безопасности доступа — таких как производственные базы данных, финансовые системы или инфраструктура, регулируемая требованиями соответствия — рассмотрите возможность добавления двухфакторной аутентификации на основе TOTP с использованием Google Authenticator или Authy совместно с SSH-ключами.
    sudo apt install libpam-google-authenticator -y
    google-authenticator
    Затем настройте PAM и sshd_config для требования как ключа, так и одноразового пароля. Это создаёт настоящий поток многофакторной аутентификации.
    Шаг 8: Тестирование и устранение неполадок SSH
    После завершения настройки систематически убедитесь, что всё работает должным образом.
    Тест подключения
    ssh -p 2222 -v username@your_server_ip
    Флаг -v включает подробный режим, выводя детальную отладочную информацию о каждом этапе подключения — незаменимо для диагностики сбоев аутентификации.
    Распространённые проблемы и решения
    
    
    
    
    Проблема
    Вероятная причина
    Решение
    
    
    
    
    Connection refused
    SSH не запущен или указан неверный порт
    Проверьте systemctl status ssh и правила брандмауэра
    
    
    Permission denied (publickey)
    Ключ отсутствует в authorized_keys или неверные разрешения
    Убедитесь, что ~/.ssh/authorized_keys существует с chmod 600
    
    
    Host key verification failed
    Изменился отпечаток сервера
    Удалите старую запись из ~/.ssh/known_hosts
    
    
    Connection timed out
    Брандмауэр блокирует порт
    Проверьте правила UFW/firewalld и группы безопасности облака
    
    
    Блокировка после изменения конфигурации
    Неправильная конфигурация в sshd_config
    Используйте консольный/KVM доступ для отмены изменений
    
    
    
    
    Диагностические команды
    # Check SSH service status
    sudo systemctl status ssh
    
    # View real-time SSH logs
    sudo journalctl -u ssh -f
    
    # Check which port SSH is listening on
    sudo ss -tlnp | grep sshd
    
    # Test configuration file syntax
    sudo sshd -t
    Полный справочник усиленной конфигурации sshd_config
    Вот готовый к использованию в производственной среде sshd_config, включающий все рекомендации по безопасности из этого руководства:
    # Network
    Port 2222
    ListenAddress 0.0.0.0
    Protocol 2
    
    # Authentication
    PermitRootLogin no
    PubkeyAuthentication yes
    PasswordAuthentication no
    PermitEmptyPasswords no
    ChallengeResponseAuthentication no
    MaxAuthTries 3
    LoginGraceTime 30
    
    # Session Management
    ClientAliveInterval 300
    ClientAliveCountMax 2
    MaxSessions 5
    
    # Access Control
    AllowUsers youruser
    
    # Features (disable what you don't need)
    X11Forwarding no
    AllowTcpForwarding no
    GatewayPorts no
    PermitUserEnvironment no
    
    # Logging
    SyslogFacility AUTH
    LogLevel VERBOSE
    Почему инфраструктура хостинга важна для безопасности SSH
    Безопасность вашей конфигурации SSH существует не в изоляции — она во многом зависит от базовой инфраструктуры. Правильно усиленная конфигурация SSH наиболее эффективна при развёртывании на сервере, который уже обеспечивает:
    
    DDoS-защиту для поглощения объёмных атак до того, как они достигнут вашего SSH-порта
    NVMe-хранилище для быстрой записи журналов и быстрого реагирования Fail2Ban
    Сетевые порты 1 Gbps для обеспечения стабильности соединения под нагрузкой
    KVM/консольный доступ как внеполосный метод восстановления, если вы случайно заблокировали себе доступ
    
    Планы VPS Hosting от AlexHost включают всё вышеперечисленное, с полным root-доступом и поддержкой пользовательских конфигураций брандмауэра — что делает их идеальными для развёртывания усиленной конфигурации SSH, описанной в этом руководстве.
    Если вам нужна панель управления для управления сервером наряду с SSH, изучите VPS Control Panels с вариантами, включающими cPanel, Plesk и DirectAdmin. Для команд, управляющих несколькими веб-ресурсами, Shared Web Hosting предоставляет управляемую среду, где усиление SSH обрабатывается на уровне инфраструктуры.
    А если вы запускаете SSL-защищённые веб-сервисы наряду с вашим SSH-защищённым сервером, сочетание вашей конфигурации с надёжным решением SSL Certificates обеспечивает сквозное шифрование для всех ваших публично доступных сервисов.
    Контрольный список безопасности SSH
    Используйте этот контрольный список перед тем, как считать конфигурацию SSH готовой к производственному использованию:
    
    [ ] Сервер OpenSSH установлен и запущен
    [ ] Порт по умолчанию 22 изменён на пользовательский порт
    [ ] Вход root отключён (PermitRootLogin no)
    [ ] Сгенерирована пара ключей Ed25519 или RSA-4096
    [ ] Открытый ключ развёрнут в authorized_keys на сервере
    [ ] Вход на основе ключей успешно проверен
    [ ] Аутентификация по паролю отключена
    [ ] Брандмауэр настроен для разрешения только нового SSH-порта
    [ ] Fail2Ban установлен и настроен
    [ ] MaxAuthTries установлен на 3 или меньше
    [ ] ClientAliveInterval настроен для завершения неактивных сессий
    [ ] Синтаксис sshd_config проверен с помощью sudo sshd -t
  • [ ] Подтверждён внеполосный консольный доступ (KVM/VNC)

Заключение

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

  1. Установили и запустили сервер OpenSSH
  2. Изменили порт по умолчанию и отключили вход root
  3. Реализовали криптографически стойкую аутентификацию на основе ключей
  4. Настроили правила брандмауэра для ограничения доступа
  5. Развернули Fail2Ban для блокировки попыток перебора
  6. Установили полную методологию устранения неполадок

SSH, при правильной настройке, становится мощным, надёжным и безопасным шлюзом для удалённого управления, конвейеров автоматизации и зашифрованного обмена данными между системами. В сочетании с надёжной хостинговой инфраструктурой — такой как Dedicated Servers от AlexHost с аппаратным DDoS-смягчением — вы получаете основу, которую действительно сложно скомпрометировать.

Периодически пересматривайте конфигурацию SSH. Ежегодно меняйте ключи. Отслеживайте журналы. Безопасность — это не разовая задача, а постоянная практика.

15%

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

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

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

Skills
Начать