Генерация SSH ключей для Windows 10

Почти на всем протяжении жизни Windows-систем главной утилитой для работы с SSH (secure shell или безопасная оболочка) была программа PuTTY. В октября 2018 года разработчики Windows выпустили сборку 1809 (Редстоун 5 или просто RS5) с компонентом OpenSSH и сторонние утилиты стали не нужны.

SSH-клиент в Windows 10 доступен в виде компонента «Клиент OpenSSH». Проверить его наличие можно в настройках системы — «Параметры» > «Приложения» > «Дополнительные компоненты» > список ниже. Если «Клиент OpenSSH» отсутствует в списке, то добавьте его.

Настройка сервиса SSH-AGENT

SSH-AGENT — это менеджер ssh-ключей. Для его активации достаточно ввести в PowerShell его наименование ssh-agent.

Есть возможность настроить автозапуск при входе в систему:

Get-Service -Name ssh-agent | Set-Service -StartupType Automatic

Или же запуск вручную по необходимости:

Get-Service -Name ssh-agent | Set-Service -StartupType Manual

Определить текущее состояние настройки запуска:

Get-Service ssh-agent | Select StartType

Проверка текущего состояния:

Get-Service ssh-agent

Генерация ключей

Ключи создаются одной командой:

ssh-keygen

Пример создания ключа с указанным алгоритмом и своим комментарием:

ssh-keygen -t ed25519 -C "MyGitHubProfile"

Утилита ssh-keygen спросит у вас где сохранить ключи и нужно ли задавать пароль для доступа к ним. Если вы используете ключи для тренировки, то пароль будет отнимать время просто так и задавать его не стоит, но если вы занимаетесь коммерческой разработкой, то пароли крайне желательны. Так надежнее.

После успешной генерации ключей добавьте приватный ключ в ssh-agent:

ssh-add ~\.ssh\id_ed25519

Просмотреть список ключей в SSH-AGENT:

ssh-add -l
ssh-add -L

Удалить все ключи из SSH-AGENT:

ssh-add -D

Если путь до приватного ключа введен правильно, то появится сообщение «Identity added». Ваша система теперь полностью готова для работы с удаленными серверами по SSH.

Что удаленный сервер мог вас опознать, необходимо отправить ему публичный ключ. Ваш публичный ключ должен быть сохранен в файле authorized_keys на удаленном сервере (по умолчанию он располагается в директории пользователя — ~/.ssh/authorized_keys). Ваш публичный ключ обычно расположен около приватного, вот тут: «~\.ssh\id_ed25519.pub». Только не перепутайте, приватный ключ остается у вас, а публичный вы отдаете в сторонние сервисы.

Символ ~ означает директорию текущего пользователя. При желании вы можете указывать полные пути, т.е. вместо «~\.ssh\id_ed25519.pub» вполне подойдет «C:\Users\username\.ssh\id_ed25519.pub».

Что еще стоит знать о SSH?

Схема работы

Если вы ранее не имели дело с SSH, то все это работает примерно так. Вы генерируете два ключа, первый — секретный (он остается только у вас, например, id_ed25519), второй — открытый (например, id_ed25519.pub), его можно передавать кому угодно. Чтобы подключаться по SSH к удаленным серверам, необходимо свой публичный ключ записать на SSH сервер в файл authorized_keys, по нему сервер опознает вас по ключу при попытке соединения. Публичный и приватный (секретный) ключи связаны между собой. Подключиться к публичному ключу лежащему на сервере сможет только владелец связанного с ним приватного (секретного) ключа.

Доступные алгоритмы шифрования

Для создания ключей можно использовать различные алгоритмы шифрования. Вкратце рассмотрим самые популярные варианты и примеры их использования.

dsa — устарел и использовать его не стоит.

ecdsa — надежный алгоритм с возможностью указывать размер ключа в битах (256, 384 и 521), неплохой выбор. Пример:

ssh-keygen -t ecdsa -b 256
ssh-keygen -t ecdsa -b 384
ssh-keygen -t ecdsa -b 521

rsa — один из самых популярных алгоритмов шифрования, хороший выбор. Желательно указывать длинные ключи шифрования от 2048 бит.

ssh-keygen -t rsa -b 256
ssh-keygen -t rsa -b 512
ssh-keygen -t rsa -b 1024
ssh-keygen -t rsa -b 2048
ssh-keygen -t rsa -b 4096

ed25519 — новый, надежный и быстрый алгоритм шифрования. Если ваша система его поддерживает, то это лучший выбор.

ssh-keygen -t ed25519

Справка

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

26.05.2021

Категория(-и): Статьи

# # # #

Добавить комментарий