Конфигуриране на SSH ключ за удостоверяване в Windows 10/2019

В тази статия ще конфигурираме SSH удостоверяване в Windows с помощта на RSA ключове за сигурен достъп до отдалечени системи. Ще покажем как да генерираме RSA ключове (сертификати) в Windows и да конфигурираме OpenSSH сървъра в Windows 10 / Windows Server 2019 за оторизация чрез ключове (без пароли).

Удостоверяването чрез SSH ключове се използва широко в света на Linux, а в Windows тази функционалност се появи сравнително наскоро. Идеята е публичният ключ на клиента да се добави към SSH сървъра и когато е свързан, сървърът проверява съответния личен ключ за клиента.

Съдържание:

  • Генериране на RSA ключове на клиент на Windows
  • Конфигуриране на OpenSSH на Windows за авторизиране на ключове
  • Вход за SSH ключ за локални администратори на Windows

Генериране на RSA ключове на клиент на Windows

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

В Windows 10 1809 и Windows Server 2019 клиентът OpenSSH е инсталиран като отделен вграден компонент:

Add-WindowsCapability -Online -Name OpenSSH.Client ~~~~ 0.0.1.0

В предишните версии на Windows можете да инсталирате порта Win32-OpenSSH с GitHub (вижте примера в статията за конфигуриране на SFTP сървъра в Windows).

Стартирайте редовна (непривилегирана сесия PowerShell) и генерирайте двойка RSA 2048 ключове с командата:

SSH-търсени

Помощната програма ще ви помоли да посочите парола за защита на личния ключ. Ако посочите парола, всеки път, когато използвате този ключ за SSH разрешение, ще трябва да въведете тази парола. Не посочих парола за ключа (не се препоръчва).

Помощната програма ssh-keygen ще създаде директория .SSH в профила на текущия потребител на Windows (C: \ Users \ your_username) и поставете в него 2 файла:

  • id_rsa - частен ключ
  • id_rsa.pub - публичен ключ

След създаването на ключовете можете да добавите частния ключ към услугата SSH агент, което ви позволява удобно да управлявате частни ключове и да ги използвате за удостоверяване.

SSH агент може да съхранява частни ключове и да ги предоставя в контекста на сигурността на текущия потребител. Стартирайте услугата ssh-agent и конфигурирайте AutoShell, за да стартирате командите за управление на услугата с помощта на PowerShell:

set-service ssh-agent StartupType 'Automatic'
Ssh-агент Start-Service

Добавете личния си ключ към базата данни на ssh-agent:

ssh-add "C: \ Потребители \ youruser \ .ssh \ id_rsa"

Или така:

ssh-add.exe $ ENV: UserProfile \ .ssh \ id_rsa

Конфигуриране на OpenSSH на Windows за авторизиране на ключове

Сега публичният ключ, който сте генерирали на клиента, трябва да бъде копиран на вашия SSH сървър (в този пример това е отдалечен компютър с Windows 10 1903 и конфигурирана услуга OpenSSH).

Вече разгледахме подробно конфигурацията на OpenSSH сървъра в Windows.

Копиране на файл id_rsa.pub към каталога .SSH потребителски профил, под който ще се свържете със SSH сървъра. Например, имам потребител, създаден в Windows 10 администратор, тогава трябва да копирам ключа към файл C: \ Потребители \ администратор \.

Можете да копирате ключа на SSH сървъра от клиента с помощта на SCP:

scp C: \ Потребители \ youruser \ .ssh \ id_rsa.pub [email protected]: c: \ users \ admin \ .ssh \ разрешени_keys

Сега можете да се свържете със SSH сървъра, без да въвеждате потребителска парола. И ако не сте задали парола (парола) за частния ключ, веднага ще се свържете с отдалечения ви Windows сървър.

За да се свържете чрез SSH към отдалечен хост, използвайте следната команда:

ssh (потребителско име) @ (име или IP адрес на SSH сървър)

Например,

ssh [email protected]

Това означава, че искате да се свържете с отдалечен SSH сървър с адреса 192.168.1.90 под сметка администратор. Услугата SSH агент автоматично ще се опита да използва предварително запазен частен ключ за оторизация.

Ако не искате да използвате ssh-agent за управление на ключове, можете да посочите пътя към личния ключ, който искате да използвате за SSH удостоверяване:

ssh [email protected] -i "C: \ Потребители \ youruser \ .ssh \ id_rsa"

Ако не сте успели да се свържете със своя SSH сървър с помощта на RSA ключа и все още ви се иска парола, най-вероятно потребителят, с когото се свързвате, е член на локалната група администратори на сървъри (SID на групата S-1-5-32-544). За това по-нататък.

Вход за SSH ключ за локални администратори на Windows

OpenSSH използва специални настройки за достъп до ключове за потребители с местни администраторски права на Windows.

На първо място, вместо клавиша за разрешен_ ключ в потребителския профил, трябва да използвате файла с клавишите C: \ ProgramData \ ssh \administrators_authorized_keyс. Трябва да добавите ключа си към този текстов файл (от съображения за сигурност само администраторите и SYSTEM трябва да имат права върху този файл).

За да използвате ключа с разрешен ключ от потребителския профил и да не прехвърляте данните от публичния ключ към файла administrators_authorized_keys, можете да коментирате реда в конфигурационния файл на OpenSSH ("C: \ ProgramData \ ssh \sshd_config").

Коментирайте редовете:

# Администратори на съвпадение на групата # AuthorizedKeysFile __PROGRAMDATA __ / ssh / administrators_authorized_keys

Освен това във файла sshd_config можете да активирате влизането с помощта на RSA ключове:

PubkeyAuthentication да

И да откажете достъп чрез парола:

PasswordAuthentication no

След като запазите промените във файла sshd_config, не забравяйте да рестартирате услугата sshd.

рестарт-сервиз sshd

Още един малък нюанс. В по-старите версии на OpenSSH трябваше да предоставите на NT Service \ sshd правото да чете разрешените_клавиши.

За целта направете едно от следните неща:

  • Инсталирайте модул OpenSSHUtils: Инсталирайте-модул -принудете OpenSSHUtils -Scope AllUsers . За да промените разрешенията на файл, изпълнете командата: Repair-AuthorizedKeyPermission -FilePath C: \ Потребители \ администратор \. ;
  • Променете разрешенията за NTFS файлове с помощта на модула за сигурност NTFSS или icacls;
  • Или можете да деактивирате режима в конфигурационния файл sshd_config StrictModes. По подразбиране този режим е активиран и забранява удостоверяването на ключовете, ако частните и публичните ключове не са достатъчно защитени. Декомментирайте линията #StrictModes да, промяна на StrictModes no .

Така че сте конфигурирали SSH удостоверяване в Windows с помощта на публичния ключ (сертификат) на RSA. Сега можете да използвате този метод за удостоверяване за сигурен достъп до отдалечени сървъри, автоматично повишаване на пренасочване на портове в SSH тунел, изпълнение на скриптове и други задачи за автоматизация.