Windows 10
В этой статье мы настроим SSH аутентификацию в Windows по RSA или EdDSA ключам для безопасного доступа к удаленным компьютерам/серверам. Рассмотрим, как сгенерировать открытый и закрытый ключи (сертификаты) в Windows и настроить сервер OpenSSH в Windows 10/11 и Windows Server 2019/2022 для аутентификации по ключам (без паролей).
Аутентификация по SSH ключам широко используется в мире Linux, а в Windows этот функционал появился относительно недавно. Идея заключается в том, что на SSH сервере добавляется открытый ключ клиента и при подключении сервер проверяет наличие соответствующего закрытого ключа у клиента. Таким образом удаленный пользователь может аутентифицироваться в Windows без ввода пароля.
Генерация SSH ключей на клиенте Windows
На клиентском, компьютере, с которого вы будет подключаетесь к удалённому серверу Windows с OpenSSH, вам нужно сгенерировать пару ключей (открытый и закрытый). Закрытый ключ хранится на клиенте (не отдавайте его никому!), а открытый ключ нужно скопировать в файл authorized_keys на SSH сервере. Чтобы сгенерировать SSH ключи на клиенте Windows, вы должны установить клиент OpenSSH.
В Windows 10/11 и Windows Server 2019/2022 клиент OpenSSH устанавливается как отдельный встроенный компонент с помощью PowerShell:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
В предыдущих версиях Windows можно установить порт Win32-OpenSSH с GitHub (см. пример в статье о настройке SFTP сервера в Windows).
Запустите обычную (непривилегированную сессию PowerShell) и сгенерируйте пару ED25519 ключей:
ssh-keygen -t ed25519
По умолчанию утилита ssh-keygen генерирует ключи RSA 2048. В настоящий момент вместо RSA ключей рекомендуется использовать именно ED25519.
Утилита попросит вас указать пароль для защиты закрытого ключа. Если вы укажете пароль, то каждый раз при использовании этого ключа для SSH авторизации, вы должны будете вводить этот пароль. Я не стал указывать пароль для ключа (не рекомендуется).
Generating public/private ed25519 key pair. Enter file in which to save the key (C:\Users\myuser/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in C:\Users\myuser/.ssh/id_ed25519. Your public key has been saved in C:\Users\myuser/.ssh/id_ed25519.pub. The key fingerprint is: SHA256:C2wXeCQSUcJyq0 myuser@computername The key's randomart image is: +--[ED25519 256]--+ | ..*O=..o. | +----[SHA256]-----+
Утилита 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
Подключение к Linux из Windows 10 с помощью ПО MobaXterm
В ОС 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