Главная / Блог / Хостинг / Настройка SSH-ключей: полное руководство по безопасности се…
ХОСТИНГ

Настройка SSH-ключей: полное руководство по безопасности сервера

Узнайте, как выполняется правильная настройка SSH-ключей для Linux. Генерация Ed25519, отключение паролей и защита VPS от взлома за 10 минут.

TL;DR
Узнайте, как выполняется правильная настройка SSH-ключей для Linux. Генерация Ed25519, отключение паролей и защита VPS от взлома за 10 минут.
SJ
slipjar.app
28 мая 2026 8 мин чтения 17 просмотров
Настройка SSH-ключей: полное руководство по безопасности сервера

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

  • Используйте алгоритм Ed25519 вместо RSA: он быстрее, короче и обеспечивает более высокий уровень безопасности при меньшем размере ключа.
  • Всегда защищайте приватный ключ парольной фразой (passphrase) — это создаст второй слой защиты на случай кражи вашего ноутбука или ПК.
  • После настройки ключей обязательно отключите вход по паролю в файле sshd_config, чтобы закрыть лазейку для ботов-сканеров.
  • Для удобного управления десятками серверов используйте файл ~/.ssh/config, чтобы не вводить IP-адреса и порты вручную.

Выбор алгоритма шифрования: почему RSA уходит в прошлое

Перед генерацией пары ключей нужно выбрать алгоритм. Долгое время стандартом был RSA, но современные требования к безопасности и производительности диктуют новые правила. Сейчас в индустрии доминируют два варианта: RSA (с длиной от 4096 бит) и Ed25519.

Для практики: описанное выше мы тестируем на серверах нашего VPS-партнёра — VPS с крипто-оплатой и нужными локациями.

Ed25519 — это современная криптография на эллиптических кривых. Этот алгоритм считается наиболее безопасным и эффективным для SSH. Ключи Ed25519 очень короткие (всего 68 символов в публичной части), что делает их удобными для копирования. В отличие от RSA, они не подвержены ряду специфических атак и работают быстрее при установке соединения.

Алгоритм Рекомендуемая длина Безопасность Совместимость
Ed25519 256 бит Максимальная OpenSSH 6.5+ (все современные ОС)
RSA 4096 бит Высокая Универсальная (старые системы)
ECDSA 256/384/521 бит Средняя Широкая, но есть вопросы к реализации
Ключи RSA с длиной 2048 бит сегодня считаются минимально допустимыми, но многие эксперты по безопасности рекомендуют переходить на 4096 бит или полностью на Ed25519 для долгосрочной защиты.

Генерация пары SSH-ключей на локальной машине

Процесс создания ключей одинаков для Linux, macOS и современных версий Windows (через PowerShell или CMD). Для генерации используется утилита ssh-keygen. Откройте терминал и выполните следующую команду:

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

Флаг -t указывает тип алгоритма, а -C добавляет комментарий (обычно почту или имя владельца), который поможет идентифицировать ключ в файле authorized_keys на сервере. После запуска система задаст три вопроса:

  1. Enter file in which to save the key: Нажмите Enter, чтобы сохранить в папку по умолчанию (~/.ssh/id_ed25519). Если у вас уже есть ключ, укажите новое имя, чтобы не перезаписать старый.
  2. Enter passphrase: Введите сложный пароль. Он будет запрашиваться каждый раз при использовании ключа. Это предотвратит вход на сервер, если кто-то получит доступ к вашим файлам.
  3. Enter same passphrase again: Подтвердите пароль.

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

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

Чтобы сервер «узнал» вас, нужно добавить содержимое публичного ключа в файл ~/.ssh/authorized_keys на стороне сервера. Это можно сделать несколькими способами, в зависимости от операционной системы. При работе с VPS на базе Linux чаще всего используют автоматизированную утилиту.

Автоматический способ через ssh-copy-id

Это самый простой и надежный метод для Linux и macOS. Выполните команду:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip

Утилита сама подключится к серверу, создаст нужные директории, установит правильные права доступа и допишет ваш ключ в список разрешенных. Вам потребуется один раз ввести пароль пользователя для подтверждения операции.

Ручной способ для Windows и особых случаев

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

cat ~/.ssh/id_ed25519.pub

Скопируйте строку, начинающуюся с ssh-ed25519. Затем зайдите на сервер под своим паролем и выполните последовательность команд:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ВАШ_СКОПИРОВАННЫЙ_КЛЮЧ" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Строгое соблюдение прав доступа (700 для папки и 600 для файла) критически важно. Если права будут слишком мягкими (например, 777), служба SSH из соображений безопасности может проигнорировать файл ключей и запретить вход.

Настройка службы SSH для максимальной защиты

Просто добавить ключ недостаточно. Чтобы настройка SSH-ключей действительно защищала сервер, нужно запретить вход по обычным паролям. Если вы выбираете виды хостинга с полным доступом к ОС (VPS или выделенный сервер), вы обязаны отредактировать конфигурацию демона sshd.

Откройте файл конфигурации: sudo nano /etc/ssh/sshd_config. Найдите и измените следующие параметры (убедитесь, что они не закомментированы символом #):

  • PasswordAuthentication no — отключает вход по паролю. Это главная настройка безопасности.
  • PubkeyAuthentication yes — разрешает вход по ключам.
  • PermitRootLogin prohibit-password — разрешает root-доступ только по ключам (или поставьте no, если планируете заходить только под обычным пользователем).
  • Port 2222 — (опционально) смена стандартного порта 22 на любой другой (например, 2222) снижает количество шума в логах от автоматических ботов.
Перед перезагрузкой SSH убедитесь, что вы открыли вторую сессию терминала или проверили доступ по ключу в соседнем окне. Если вы допустили ошибку в конфиге и закрыли единственное окно, вы можете потерять доступ к серверу.

Примените настройки командой: sudo systemctl restart ssh.

Использование файла config для управления множеством серверов

Если у вас более двух серверов, запоминать IP-адреса, нестандартные порты и пути к разным ключам становится невозможно. Для этого в OpenSSH предусмотрен клиентский файл конфигурации. Создайте или откройте его на своем компьютере: nano ~/.ssh/config.

Пример эффективной настройки:

Host dev-server
  HostName 192.168.1.50
  User admin
  Port 2222
  IdentityFile ~/.ssh/id_ed25519

Host prod-vps
  HostName 203.0.113.10
  User root
  IdentityFile ~/.ssh/id_production

Теперь вместо ввода длинной команды ssh -p 2222 admin@192.168.1.50 вам достаточно написать ssh dev-server. Система сама подставит нужный порт, логин и выберет правильный ключ. Это экономит до 15-20 минут рабочего времени в неделю для активного DevOps-инженера или системного администратора.

Безопасное хранение и работа с SSH-агентом

Если вы установили парольную фразу на ключ, вводить её при каждом подключении неудобно. Для решения этой проблемы существует ssh-agent. Это фоновая программа, которая хранит расшифрованные ключи в оперативной памяти в течение сессии.

Запустите агент и добавьте ключ:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Теперь пароль потребуется ввести только один раз при добавлении. В macOS и многих дистрибутивах Linux (например, Ubuntu с GNOME) SSH-агент интегрирован в систему и может автоматически сохранять пароль в связке ключей (Keychain), что делает процесс входа полностью прозрачным и бесшовным.

Для тех, кто заботится о физической безопасности, отличным решением будет использование аппаратных токенов (например, Yubikey). Современные ключи поддерживают стандарт FIDO2/U2F, и в OpenSSH 8.2+ появилась возможность генерировать ключи типа ed25519-sk, которые физически невозможно скопировать с устройства.

Диагностика типичных ошибок подключения

Настройка SSH-ключей иногда приводит к ошибке «Permission denied (publickey)». В 90% случаев причина кроется в одной из трех проблем:

  1. Неверные права на сервере. Проверьте, что папка .ssh имеет права 700, а файл authorized_keys — 600. Владельцем файлов должен быть тот пользователь, под которым вы входите.
  2. Ключ не добавлен в агент. Если вы используете нестандартное имя файла ключа и не прописали его в ~/.ssh/config, клиент просто не знает, какой файл предъявить серверу.
  3. Ошибки в sshd_config. Если вы изменили конфиг на сервере, но не перезапустили службу или допустили опечатку в названии параметров.

Для глубокой отладки используйте флаг подробного вывода: ssh -vvv user@server_ip. В логах вы увидите пошаговый процесс согласования алгоритмов и конкретную причину, по которой сервер отклонил ваш ключ.

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

Часто задаваемые вопросы

Можно ли использовать один и тот же ключ на разных серверах?

Технически — да, это удобно. Однако с точки зрения безопасности лучше генерировать отдельную пару ключей для каждой группы задач (например, один для работы, другой для личных проектов). Если один ключ будет скомпрометирован, вам не придется менять доступ на всех серверах сразу.

Что делать, если я потерял приватный ключ, а вход по паролю отключен?

В этом случае вы не сможете зайти по SSH. Вам придется воспользоваться консолью восстановления (VNC или IPMI), которую предоставляют провайдеры хостинга в личном кабинете. Через эту консоль можно сбросить настройки sshd_config или добавить новый публичный ключ.

Нужно ли менять ключи по расписанию (ротация)?

Для обычных проектов ротация раз в год считается хорошим тоном. В корпоративных средах с высокими требованиями безопасности (PCI DSS, HIPAA) ротация может проводиться каждые 90 дней. Если есть подозрение, что приватный ключ мог попасть в чужие руки, его нужно немедленно удалить из authorized_keys на всех серверах и сгенерировать новый.

Как скопировать ключ на сервер, если порт SSH изменен?

Если сервер слушает, например, порт 2222, команда для копирования будет выглядеть так: ssh-copy-id -p 2222 -i ~/.ssh/id_ed25519.pub user@server_ip. Обратите внимание, что флаг -p должен идти перед указанием пользователя.

Автор

SJ

slipjar.app

Редакция

Команда slipjar.app пишет о хостинге, серверах и инфраструктуре.