Обзор
В этой статье рассматриваются шаги по настройке клиентской стороны 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 повышает безопасность и удобство администрирования.
