LinuxNotes
← Все статьи

Настройка SSH-сервера и авторизации по ключам

Подключение по ключу с проверкой доступа до отключения пароля.

Безопасность систем2 мин чтения

Подготовка сервера

Пример сервера - Arch Linux или CachyOS. Нужны sudo, обычная учётная запись и доступ к консоли на случай ошибки. На клиенте должен быть установлен OpenSSH.

sudo pacman -Syu openssh
sudo systemctl enable --now sshd
sudo sshd -t

sshd -t проверяет синтаксис конфигурации. Если используется межсетевой экран, разрешите TCP-порт 22 только для нужных источников, прежде чем подключаться удалённо.

Создание ключа на клиенте

ssh-keygen -t ed25519 -C 'personal-laptop'

Выберите парольную фразу. Если файл ключа уже существует, не перезаписывайте его: задайте другое имя. Закрытый ключ остаётся на клиенте; на сервер передаётся только файл с расширением .pub.

Установка открытого ключа

В командах замените user и server.example своей учётной записью и адресом:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server.example
ssh -o PreferredAuthentications=publickey user@server.example

При первом подключении сверяйте отпечаток ключа хоста с данными консоли сервера. Запрос парольной фразы ключа нормален: это локальная защита, а не пароль серверной учётной записи.

Отключение паролей

Оставьте рабочую сессию открытой. Только после успешного входа по ключу отредактируйте /etc/ssh/sshd_config, установив эффективные значения:

PubkeyAuthentication yes
PasswordAuthentication no
KbdInteractiveAuthentication no
PermitRootLogin no

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

sudo sshd -t
sudo sshd -T | less
sudo systemctl reload sshd

Откройте второе подключение по ключу. Не закрывайте первое, пока новое не заработает. Для проверки Match используйте sshd -T -C с параметрами конкретного подключения согласно руководству sshd.

Диагностика

ssh -v user@server.example
sudo journalctl -u sshd -n 50 --no-pager

Первую команду выполняют на клиенте, вторую - на сервере. Если ключ отвергается, проверьте владельца домашнего каталога и права ~/.ssh (700), authorized_keys (600). Не публикуйте закрытые ключи и полные журналы с чувствительными адресами.

Документация: OpenSSH manuals.

Читайте дальше