Linux

Настройка SSH-ключевой аутентификации в Linux за 5 минут

В этом гайде вы узнаете, как сгенерировать SSH-ключ, добавить его на удалённый сервер Linux и настроить безопасное беспарольное подключение. После выполнения инструкции вы сможете работать с удалёнными машинами без использования паролей.

Обновлено 4 июля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04Ubuntu 22.04Debian 11Fedora 36

Введение

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

Если подключение успешно, вы окажетесь на удалённой машине без ввода пароля.

Проверка результата

Чтобы убедиться, что всё настроено корректно, выполните следующие действия:

  1. Попробуйте подключиться из другого терминала: ssh user@remote-host.
  2. Проверьте список принятых ключей на сервере: cat ~/.ssh/authorized_keys.
  3. Убедитесь, что лог файл /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) для получения подробной информации.

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

Как сгенерировать SSH-ключ на локальной машине?
Как скопировать публичный ключ на удалённый сервер?
Что делать, если подключение по SSH не работает с ключом?
Как настроить автоматическое подключение по ключу?

Полезное

Установка и включение SSH-сервера
Генерация SSH-ключа
Копирование публичного ключа на удалённый сервер
Настройка прав доступа и тестовое подключение

Эта статья помогла вам решить проблему?