Подготовка сервера
Пример сервера - 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.