Обновить настройки cookies

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

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

Что такое SSH-ключи и почему они лучше паролей

SSH (Secure Shell) — это протокол для безопасного удалённого доступа к серверам. Обычно для входа используется пароль, но он уязвим: его можно забыть, подобрать brute-force атакой или перехватить при слабом шифровании. SSH-ключи решают эти проблемы, заменяя пароль криптографической парой: публичным и приватным ключами.
Публичный ключ размещается на сервере, а приватный остаётся у вас и никогда не передаётся по сети. При подключении сервер проверяет соответствие ключей с помощью математических алгоритмов. Этот метод исключает риск утечки пароля и позволяет автоматизировать вход, что особенно ценно для системных администраторов, разработчиков и DevOps-специалистов.

Преимущества SSH-ключей:
  • Высокая устойчивость к атакам.
  • Удобство автоматического подключения.
  • Гибкость в управлении доступом для нескольких пользователей или устройств.

Генерация пары SSH-ключей

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

Для начала нужно сгенерировать ключи на вашем локальном устройстве. Для этого используется утилита ssh-keygen, доступная в Linux, macOS и Windows (с Git Bash или WSL).

Откройте терминал и выполните:
ssh-keygen -t rsa -b 4096
Разберём параметры:
  • -t rsa — задаёт алгоритм шифрования. RSA — один из самых распространённых и надёжных вариантов;
  • -b 4096 — определяет длину ключа в битах. 4096 — современный стандарт для высокой безопасности.

Система запросит путь для сохранения файлов. По умолчанию это ~/.ssh/id_rsa (приватный ключ) и ~/.ssh/id_rsa.pub (публичный ключ). Если ключи уже есть, укажите другой путь, например:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_new_key -C "мой_новый_ключ"

Защита ключа паролем

Вас попросят ввести пароль для приватного ключа. Это необязательно, но крайне рекомендуется: если кто-то получит доступ к вашему устройству, без пароля ключ будет бесполезен. Используйте сложный пароль (12+ символов, буквы, цифры, спецсимволы). После этого вы получите два файла и отпечаток ключа (fingerprint) для проверки подлинности.
Проверьте созданные файлы:
ls -l ~/.ssh

Передача публичного ключа на сервер

Если у вас есть утилита ssh-copy-id, используйте её:
ssh-copy-id -i ~/.ssh/id_rsa.pub пользователь@адрес_сервера
  • -i ~/.ssh/id_rsa.pub — путь к публичному ключу.
  • пользователь@адрес_сервера — имя пользователя и IP/домен (например, [email protected]).
После ввода текущего пароля сервера ключ добавится в ~/.ssh/authorized_keys.

Ручной способ

Если команда ssh-copy-id отсутствует, вы можете вручную скопировать ключ с помощью следующей команды:
cat ~/.ssh/id_rsa.pub | ssh username@адрес_сервера "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Убедитесь, что права доступа для директории ~/.ssh на сервере установлены корректно:
  • Папка ~/.ssh: права 700;
  • Файл authorized_keys: права 600.

Тестирование подключения

Попробуйте подключиться:
ssh пользователь@адрес_сервераЕсли пароль ключа не задан, вход будет автоматическим. Иначе введите пароль ключа. Убедитесь, что всё работает.

Если что-то пошло не так, используйте отладочный режим:
ssh -v пользователь@адрес_сервераЛог покажет, где ошибка (например, неверные права или отсутствие ключа).

Повышение безопасности сервера

Отключение входа по паролю

Откройте /etc/ssh/sshd_config:
nano /etc/ssh/sshd_configУстановите:
PasswordAuthentication no
Внимание: Сначала проверьте вход по ключу, иначе доступ будет потерян.

Смена порта SSH

Измените порт в конфигурации /etc/ssh/sshd_config (например, на 2222):
Port 2222
Перезапустите службу:
sudo systemctl restart sshd
Проверьте статус:
sudo systemctl status sshd

Типичные ошибки и их устранение

Настройка SSH-ключей иногда вызывает сложности. Вот несколько частых ошибок и способы их исправления:

Ошибка: "Permission denied (publickey)"

Это значит, что сервер не принял ваш ключ. Проверьте:
  1. Правильно ли скопирован публичный ключ в ~/.ssh/authorized_keys;
  2. Права доступа: выполните
    chmod 700 ~/.ssh ; chmod 600 ~/.ssh/authorized_keys
  3. Владелец файлов: убедитесь, что они принадлежат пользователю
    chown пользователь:группа ~/.ssh -R

Ошибка: "Agent admitted failure to sign"

Проблема с SSH-агентом. Перезапустите его:
eval "$(ssh-agent -s)"
Затем добавьте ключ:
ssh-add ~/.ssh/id_rsa

Подключение зависает

Возможно, сервер требует ввода пароля ключа, а вы его не заметили. Убедитесь, что используете правильный ключ, или проверьте лог:
ssh -v пользователь@адрес_сервера

Автоматизация работы с SSH

Настройка aliases

Создайте файл ~/.ssh/config:
Host dev
HostName dev.example.com
User devuser
Port 2222
IdentityFile ~/.ssh/dev_key

Подключайтесь:
ssh dev
Используя SSH-ключи, вы можете автоматизировать различные задачи, такие как:
  • Резервное копирование данных по SSH с помощью rsync;
  • Автоматическое выполнение скриптов и команд на удалённом сервере;
  • Управление конфигурациями и деплой приложений с помощью Ansible или других инструментов автоматизации.

Полезные советы

  • Храните приватный ключ на зашифрованном носителе;
  • Используйте ssh-add для управления ключами;
  • Попробуйте подключиться к тестовому серверу и поделитесь опытом в комментариях.

Заключение

Настройка авторизации по SSH-ключам значительно повышает безопасность и удобство работы с Linux серверами. Выполнив описанные шаги и следуя рекомендациям, вы обеспечите надёжную защиту своих серверов и упростите процессы управления.
02 Apr 2025, 19:12:49

Премиум выделенные серверы

Смотреть конфигурации