Home » Настройка SSH ключей на Ubuntu 24
Настройка SSH ключей на Ubuntu 24

Настройка SSH ключей на Ubuntu 24

Если вы работаете с серверами, то наверняка знаете, что SSH-ключи — это не просто модная штука, а необходимый инструмент для безопасного подключения к удалённым машинам. В Ubuntu 24 (как и в предыдущих версиях) настройка SSH-ключей позволяет забыть о паролях при подключении к серверам, повышает безопасность и открывает возможности для автоматизации. Сегодня разберём, как правильно настроить SSH-ключи, избежать типичных ошибок и использовать их для максимальной эффективности.

Как работают SSH-ключи

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

Основные типы SSH-ключей:

  • RSA — классический вариант, поддерживается везде, но сегодня не рекомендуется для новых ключей
  • Ed25519 — современный стандарт, быстрый и безопасный
  • ECDSA — хорошая альтернатива, но Ed25519 предпочтительнее

Пошаговая настройка SSH-ключей

Шаг 1: Генерация ключей

Начнём с создания новой пары ключей. Используем Ed25519 — это современный и безопасный алгоритм:

ssh-keygen -t ed25519 -C "your_email@example.com"

Если ваша система не поддерживает Ed25519, используйте RSA с увеличенной длиной:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Система предложит выбрать место для сохранения ключей. По умолчанию это ~/.ssh/id_ed25519 — жмите Enter, если устраивает, или укажите свой путь.

Шаг 2: Установка passphrase

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

Enter passphrase (empty for no passphrase): ********
Enter same passphrase again: ********

Шаг 3: Копирование ключа на сервер

Самый простой способ — использовать ssh-copy-id:

ssh-copy-id username@server_ip

Если ssh-copy-id недоступен, делаем это вручную:

cat ~/.ssh/id_ed25519.pub | ssh username@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

Шаг 4: Настройка прав доступа

На сервере проверьте права доступа к файлам SSH:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Практические примеры и кейсы

Множественные ключи для разных серверов

Создаём конфигурационный файл ~/.ssh/config:

Host production-server
    HostName 192.168.1.100
    User root
    IdentityFile ~/.ssh/id_production
    Port 22

Host staging-server
    HostName 192.168.1.101
    User deploy
    IdentityFile ~/.ssh/id_staging
    Port 2222

Теперь можно подключаться просто:

ssh production-server
ssh staging-server

Сравнение типов ключей

Тип ключа Безопасность Скорость Размер ключа Поддержка
Ed25519 Высокая Быстрая Маленький Современные системы
RSA 4096 Хорошая Средняя Большой Универсальная
ECDSA Хорошая Быстрая Средний Хорошая

Типичные ошибки и их решения

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

Наиболее частая проблема. Причины и решения:

  • Неправильные права доступа: Проверьте права на ~/.ssh (700) и ~/.ssh/authorized_keys (600)
  • Неправильный пользователь: Убедитесь, что подключаетесь под правильным пользователем
  • SSH-агент не запущен: Запустите ssh-agent и добавьте ключ
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Проблема: Host key verification failed

Это происходит при изменении ключа сервера. Решение:

ssh-keygen -R server_ip
# или
ssh-keygen -R hostname

Автоматизация и скрипты

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

#!/bin/bash

SERVERS=("192.168.1.100" "192.168.1.101" "192.168.1.102")
USERNAME="deploy"
KEY_PATH="~/.ssh/id_ed25519.pub"

for server in "${SERVERS[@]}"; do
    echo "Настраиваем SSH для $server..."
    ssh-copy-id -i $KEY_PATH $USERNAME@$server
    if [ $? -eq 0 ]; then
        echo "✓ Ключ успешно установлен на $server"
    else
        echo "✗ Ошибка при установке ключа на $server"
    fi
done

Автоматическое добавление ключей в ssh-agent

Добавьте в ~/.bashrc:

if [ -z "$SSH_AUTH_SOCK" ] ; then
    eval `ssh-agent -s`
    ssh-add ~/.ssh/id_ed25519
fi

Продвинутые настройки

Настройка SSH-сервера для повышения безопасности

Редактируем /etc/ssh/sshd_config:

PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin no
AllowUsers deploy admin
Protocol 2
Port 2222

Перезапускаем SSH-сервис:

sudo systemctl restart sshd

Использование SSH-ключей с Docker

Для передачи SSH-ключей в контейнер:

docker run -v ~/.ssh:/root/.ssh:ro ubuntu:24.04 ssh user@server

Интересные факты и возможности

  • SSH-туннели: Можно создавать безопасные туннели для доступа к внутренним сервисам
  • Jump host: Настройка подключения через промежуточный сервер
  • Мультиплексирование: Переиспользование соединений для ускорения

Пример настройки jump host в ~/.ssh/config:

Host jump-server
    HostName jump.example.com
    User jumpuser

Host internal-server
    HostName 10.0.1.100
    User internaluser
    ProxyJump jump-server

Мониторинг и безопасность

Регулярно проверяйте логи SSH:

sudo tail -f /var/log/auth.log | grep ssh

Настройте fail2ban для защиты от брутфорса:

sudo apt install fail2ban
sudo systemctl enable fail2ban

Альтернативные инструменты

  • Ansible: Автоматизация настройки множества серверов
  • Terraform: Инфраструктура как код с автоматической настройкой ключей
  • Vault: Централизованное управление секретами и ключами

Полезные ссылки:

Заключение и рекомендации

SSH-ключи — это основа безопасной работы с серверами. Правильная настройка экономит время, повышает безопасность и открывает возможности для автоматизации. Основные рекомендации:

  • Используйте Ed25519 для новых ключей
  • Обязательно устанавливайте passphrase
  • Настройте SSH-агент для удобства работы
  • Регулярно проверяйте и обновляйте ключи
  • Отключите парольную аутентификацию на серверах

Если вам нужен VPS для тестирования настроек SSH или выделенный сервер для продакшена, помните: правильно настроенные SSH-ключи — это первый шаг к безопасной инфраструктуре.

Настройка SSH-ключей может показаться сложной на первый взгляд, но после освоения базовых принципов вы будете использовать их везде. Это инвестиция в безопасность и удобство работы, которая окупается уже с первого дня использования.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked