Настройка клиентской стороны SSH-аутентификации по открытому ключу (Windows/Linux)

Обзор

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

Предварительные условия

  • SSH-клиент установлен по умолчанию (Windows 10+, Linux — стандартно)
  • Сервер настроен на приём аутентификации по открытому ключу
  • На сервере создан пользователь для подключения

Типы ключей и методы шифрования

Основные типы SSH-ключей: RSA, ECDSA и Ed25519. Ниже приведено сравнение их характеристик и рекомендуемого применения.

Тип ключа Характеристика Рекомендуемое применение Совместимость
RSA Наиболее распространён, с регулируемой длиной ключа. Совместимость со старыми системами Очень высокая
ECDSA Эллиптические кривые, высокая скорость при меньшей длине. Производительные среды Средняя
Ed25519 Новый стандарт, высокая безопасность и скорость. Современные системы Поддерживается OpenSSH 6.5+

Рекомендуется использовать Ed25519 — он безопасен, компактен и поддерживается всеми современными SSH-клиентами. RSA остаётся основным выбором для старых систем.

Переменные

Переменная Пример Описание
<<USERNAME>> exampleuser Имя пользователя на клиенте
<<SERVER>> 192.168.1.10 IP-адрес или имя сервера
<<USER>> ubuntu или ec2-user Имя пользователя на сервере
<<EMAIL_ADDRESS>> user@example.com Комментарий к ключу (необязательно)

Примечание для Windows

Все команды приведены для PowerShell.
Если используется cmd.exe, замените $env:USERPROFILE на %USERPROFILE%.

Windows: настройка клиента

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

Откройте PowerShell от имени администратора:

ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"

Вывод:

Your identification has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519
Your public key has been saved in /C:/Users/<<USERNAME>>/.ssh/id_ed25519.pub

Путь к ключам:

  • Публичный: $env:USERPROFILE\.ssh\id_ed25519.pub
  • Приватный: $env:USERPROFILE\.ssh\id_ed25519

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

cat $env:USERPROFILE\.ssh\id_ed25519.pub | ssh <<USER>>@<<SERVER>> "mkdir -p ~/.ssh; cat >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys"

Шаг 3: Проверка подключения

ssh -i $env:USERPROFILE\.ssh\id_ed25519 <<USER>>@<<SERVER>>

При первом подключении подтвердите fingerprint командой yes.


Linux: настройка клиента

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

ssh-keygen -t ed25519 -C "<<EMAIL_ADDRESS>>"

Путь:

  • Публичный: ~/.ssh/id_ed25519.pub
  • Приватный: ~/.ssh/id_ed25519

Шаг 2: Добавление ключа на сервер

ssh-copy-id -i ~/.ssh/id_ed25519.pub <<USER>>@<<SERVER>>

Или вручную добавьте содержимое .pub в ~/.ssh/authorized_keys.

Шаг 3: Проверка подключения

ssh -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>

Использование SSH-агента (для ключей с паролем)

Шаг 1: Запуск агента

Windows:

Set-Service -Name ssh-agent -StartupType Manual
Start-Service ssh-agent

Linux:

eval "$(ssh-agent -s)"

Шаг 2: Добавление ключа

Windows:

ssh-add $env:USERPROFILE\.ssh\id_ed25519

Linux:

ssh-add ~/.ssh/id_ed25519

Шаг 3: Проверка

ssh-add -l

Вывод отпечатка ключа означает успешное добавление.


Конфигурация SSH (config)

Создайте файл ~/.ssh/config (или C:\Users\<<USERNAME>>\.ssh\config):

Host myserver
    HostName <<SERVER>>
    User <<USER>>
    IdentityFile ~/.ssh/id_ed25519
    Port 22

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

ssh myserver

Для нескольких серверов:

Host web
    HostName 192.168.1.10
    User ubuntu
    IdentityFile ~/.ssh/id_ed25519

Host db
    HostName 192.168.1.11
    User ec2-user
    IdentityFile ~/.ssh/id_ed25519

Для безопасности рекомендуется использовать разные ключи для разных серверов.


Диагностика

Для подробного лога используйте:

ssh -vvv -i ~/.ssh/id_ed25519 <<USER>>@<<SERVER>>

Сообщение Authentication succeeded (publickey) означает успешное подключение.


Заключение

SSH-аутентификация по открытому ключу позволяет безопасно подключаться без пароля.
Настройка проста — достаточно сгенерировать ключ, добавить публичную часть на сервер и при необходимости использовать SSH-агент.
Корректная настройка прав доступа и конфигурации ~/.ssh/config повышает безопасность и удобство администрирования.