Введение
SSH-ключевая аутентификация заменяет парольные методы более надёжным и удобным способом подключения к удалённым машинам. После настройки вы сможете подключаться без ввода пароля, что ускоряет работу и снижает риск утечки учётных данных. Гайд подходит для популярных дистрибутивов Linux.
Требования
- Установленный OpenSSH-сервер на целевой машине (проверьте
sshd -V). - Права администратора (
sudo) для изменений на сервере. - Поддерживаемые ОС: Ubuntu 20.04+, Debian 11+, Fedora 36+ (другие дистрибутивы работают аналогично).
Пошаговая инструкция
Шаг 1: Установка и включение SSH-сервера
Если на целевом компьютере ещё нет SSH-сервера, установите его:
# Для Debian/Ubuntu
sudo apt update
sudo apt install openssh-server
# Для Fedora / CentOS 8
sudo dnf install openssh-server
После установки служба запускается автоматически; проверьте статус:
sudo systemctl status sshd
Шаг 2: Генерация SSH-ключа
На локальной машине, с которой будете подключаться, создайте пару ключей. Для максимальной безопасности используйте алгоритм Ed25519:
ssh-keygen -t ed25519 -C "work-pc" -f ~/.ssh/id_ed25519
При запросе пароля можно защитить закрытый ключ. Публичный ключ находится в файле ~/.ssh/id_ed25519.pub.
Шаг 3: Копирование публичного ключа на удалённый сервер
Самый простой способ — использовать утилиту ssh-copy-id:
ssh-copy-id user@remote-host
Если утилита отсутствует, импортируйте ключ вручную:
# На сервере
mkdir -p ~/.ssh
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
Шаг 4: Настройка прав доступа и тестовое подключение
Задайте строгие права для папки .ssh, чтобы никто лишний не смог прочитать ключи:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
chown -R $USER:$USER ~/.ssh
Теперь проверьте беспарольное подключение:
ssh user@remote-host
Если подключение успешно, вы окажетесь на удалённой машине без ввода пароля.
Проверка результата
Чтобы убедиться, что всё настроено корректно, выполните следующие действия:
- Попробуйте подключиться из другого терминала:
ssh user@remote-host. - Проверьте список принятых ключей на сервере:
cat ~/.ssh/authorized_keys. - Убедитесь, что лог файл
/var/log/auth.logне содержит ошибок аутентификации.
Возможные проблемы
- Неправильные права доступа: если права на
~/.sshне700или наauthorized_keysне600, SSH отклонит ключ. Исправьте их с помощью командchmod. - Ключ не загружен: убедитесь, что публичный ключ действительно добавлен в
authorized_keys. Проверьте содержимое файла. - SSH-сервер не запущен: выполните
sudo systemctl start sshdи включите автозапускsudo systemctl enable sshd. - Фейрволл блокирует порт: убедитесь, что
22(SSH) открыт. На Ubuntu проверьтеsudo ufw status; на Fedora —sudo firewall-cmd --list-all. - Устаревший клиент: если клиент старого типа не поддерживает Ed25519, укажите алгоритм RSA:
ssh-keygen -t rsa -b 4096.
При возникновении ошибок проверьте лог файл аутентификации (/var/log/auth.log или journalctl -u sshd) для получения подробной информации.