Настройка SSH аутентификации по ключам в Windows

Автор: | 13/05/2024

Windows 10

В этой статье мы настроим SSH аутентификацию в Windows по RSA или EdDSA ключам для безопасного доступа к удаленным компьютерам/серверам. Рассмотрим, как сгенерировать открытый и закрытый ключи (сертификаты) в Windows и настроить сервер OpenSSH в Windows 10/11 и Windows Server 2019/2022 для аутентификации по ключам (без паролей).

Аутентификация по SSH ключам широко используется в мире Linux, а в Windows этот функционал появился относительно недавно. Идея заключается в том, что на SSH сервере добавляется открытый ключ клиента и при подключении сервер проверяет наличие соответствующего закрытого ключа у клиента. Таким образом удаленный пользователь может аутентифицироваться в Windows без ввода пароля.

На клиентском, компьютере, с которого вы будет подключаетесь к удалённому серверу Windows с OpenSSH, вам нужно сгенерировать пару ключей (открытый и закрытый). Закрытый ключ хранится на клиенте (не отдавайте его никому!), а открытый ключ нужно скопировать в файл authorized_keys на SSH сервере. Чтобы сгенерировать SSH ключи на клиенте Windows, вы должны установить клиент OpenSSH.

В Windows 10/11 и Windows Server 2019/2022 клиент OpenSSH устанавливается как отдельный встроенный компонент с помощью PowerShell:

В предыдущих версиях Windows можно установить порт Win32-OpenSSH с GitHub (см. пример в статье о настройке SFTP сервера в Windows).

Запустите обычную (непривилегированную сессию PowerShell) и сгенерируйте пару ED25519 ключей:

По умолчанию утилита ssh-keygen генерирует ключи RSA 2048. В настоящий момент вместо RSA ключей рекомендуется использовать именно ED25519.

Утилита попросит вас указать пароль для защиты закрытого ключа. Если вы укажете пароль, то каждый раз при использовании этого ключа для SSH авторизации, вы должны будете вводить этот пароль. Я не стал указывать пароль для ключа (не рекомендуется).

Утилита ssh-keygen создаст каталог .ssh в профиле текущего пользователя Windows (%USERPROFILE%\.ssh) и сгенерирует 2 файла:

  • id_ed25519 – закрытый ключ (если вы сгенерировали ключ типа RSA, файл будет называться id_rsa )
  • id_ed25519.pub – публичный ключ (аналогичный RSA ключ называется id_rsa.pub )

После того, как ключи созданы, вы можете добавить закрытый ключ в службу SSH Agent, которая позволяет удобно управлять закрытыми ключами и использовать их для аутентификации. Это необходимо для работы по ssh в среде Win <-> Win, более подробно по ссылке ниже. Для работы Win <-> Lin это можно пропустить, если не используете ssh через PowerShell.

https://winitpro.ru/index.php/2019/11/13/autentifikaciya-po-ssh-klyucham-v-windows

В ОС Windows 10 все ваши ключи лежат в папке %USERPROFILE%\.ssh:

Ключ id_ed25519.pub должен быть скопирован в конец файла /home/user/.ssh/authorized_keys вашего linux сервера.

При первом подключении к linux серверу, необходимо будет указать ваш закрытый ключ ОС Windows из папки %USERPROFILE%\.ssh - id_ed25519. При первом подключении сессии по ssh, необходимо дать согласие на сохранение публичного ключа linux сервера в сессии MobaXterm.

Можно забыть о вводе пароля для подключения к Linux серверу из Win.

Более подробно можно узнать по сылке ниже:

https://winitpro.ru/index.php/2019/11/13/autentifikaciya-po-ssh-klyucham-v-windows