Введение / Зачем это нужно
SSH-ключевая аутентификация заменяет парольную защиту более надёжным и удобным способом. После настройки вы сможете подключаться к любым удалённым серверам без ввода пароля, что ускоряет работу и повышает безопасность. В этом гайде мы настроим ключевую авторизацию на популярных дистрибутивах Linux: Ubuntu, Debian, CentOS и Fedora.
Требования / Подготовка
- Установленный SSH-сервер (
sshd) на целевом хосте. - Доступ к консоли целевого хоста с правами суперпользователя (
rootилиsudo). - Установленный SSH-клиент на рабочей станции.
- Bash или совместимый интерпретатор командной строки.
⚠️ Важно: Все команды выполняйте от имени суперпользователя, иначе могут возникнуть ошибки доступа.
Шаг 1: Установите OpenSSH (если отсутствует)
На Debian/Ubuntu:
sudo apt update && sudo apt install openssh-client openssh-server
На RHEL/CentOS/Fedora:
sudo yum install openssh-clients openssh-server # CentOS/RHEL
# или
sudo dnf install openssh-clients openssh-server # Fedora
Шаг 2: Сгенерируйте SSH-ключевую пару
ssh-keygen -t ed25519 -C "workstation"
Примите стандартное расположение (~/.ssh/id_ed25519) и при желании защитите ключ фразой. Для автоматизации вы можете пропустить ввод пароля, добавив -N ''.
Шаг 3: Скопируйте публичный ключ на удалённый хост
Самый простой способ — использовать ssh-copy-id:
ssh-copy-id user@host
Если утилита отсутствует, вручную добавьте содержимое публичного ключа:
cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys
Шаг 4: Настройте права доступа к каталогу .ssh
Неправильные права — частая причина неудач подключения.
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Если вы добавляли ключ для root, выполните те же команды для /root/.ssh.
Шаг 5: Проверьте SSH-подключение без пароля
ssh -i ~/.ssh/id_ed25519 user@host 'echo "SSH работает"'
Если вы видите SSH работает, авторизация настроена успешно.
Шаг 6: Опционально: разрешите использование ключа для пользователя root
Добавьте тот же публичный ключ в авторизационный файл root:
sudo cat ~/.ssh/id_ed25519.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
Теперь вы можете подключаться к системе от имени root без пароля.
Проверка результата
- Убедитесь, что каталог
~/.sshимеет права700. - Проверьте содержимое
authorized_keys:cat ~/.ssh/authorized_keys - Попробуйте выполнить команду с использованием приватного ключа:
ssh -i ~/.ssh/id_ed25519 user@host ls -l /tmp
Если вы видите содержимое каталога, ключ работает корректно.
Возможные проблемы
- Ошибка доступа при подключении – убедитесь, что
authorized_keysимеет права600и владельцем является тот же пользователь, от чьего имени вы подключаетесь. ssh-keygenне найден – установите пакетopenssh-client, как описано в шаге 1.ssh-copy-idотсутствует – выполните ручное добавление ключа или установитеopenssh-client(он включает эту утилиту).- Ключ отклонён сервером – проверьте формат файла
authorized_keys(должна быть одна строка, начинающаяся сssh-rsa,ssh-ed25519и т.д.).
Исправив перечисленные ошибки, вы сможете беспрепятственно использовать SSH-авторизацию на всех поддерживаемых дистрибутивах.