Konfigurace autentizace pomocí klíče SSH v systému Windows 10/2019

V tomto článku nakonfigurujeme ověřování SSH ve Windows pomocí klíčů RSA pro zabezpečený přístup ke vzdáleným systémům. Ukážeme, jak generovat klíče RSA (certifikáty) ve Windows a nakonfigurovat server OpenSSH v systému Windows 10 / Windows Server 2019 pro autorizaci pomocí klíčů (bez hesel).

Ověřování pomocí SSH klíčů je široce používáno ve světě Linuxu a ve Windows se tato funkce objevila relativně nedávno. Myšlenka je taková, že veřejný klíč klienta je přidán na server SSH a po připojení server zkontroluje odpovídající soukromý klíč pro klienta.

Obsah:

  • Generování klíčů RSA na klientovi Windows
  • Konfigurace OpenSSH ve Windows pro klíčovou autorizaci
  • Přihlášení SSH klíče pro místní správce Windows

Generování klíčů RSA na klientovi Windows

V klientském počítači, ze kterého se budete připojovat ke vzdálenému serveru Windows pomocí OpenSSH, musíte vygenerovat pár RSA klíčů (veřejné a soukromé). Soukromý klíč je uložen na klientovi (nedávejte jej nikomu!) A veřejný klíč je umístěn na serveru SSH v souboru autorizované_keys. Chcete-li vygenerovat klíče RSA na klientovi Windows, musíte nainstalovat klienta OpenSSH.

Ve Windows 10 1809 a Windows Server 2019 je klient OpenSSH nainstalován jako samostatná integrovaná součást:

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

V předchozích verzích systému Windows můžete nainstalovat port Win32-OpenSSH pomocí GitHub (viz příklad v článku o konfiguraci SFTP serveru ve Windows).

Spusťte pravidelnou (neprivilegovanou relaci PowerShell) a vygenerujte pár kláves RSA 2048 pomocí příkazu:

ssh-keygen

Nástroj vás požádá o zadání hesla k ochraně soukromého klíče. Pokud zadáte heslo, budete muset při každém použití tohoto klíče pro autorizaci SSH zadat toto heslo. Nezadal jsem heslo pro klíč (nedoporučuje se).

Nástroj ssh-keygen vytvoří adresář .ssh do profilu aktuálního uživatele Windows (C: \ Users \ your_username) a vložte do něj 2 soubory:

  • id_rsa - soukromý klíč
  • id_rsa.pub - veřejný klíč

Po vytvoření klíčů můžete do služby přidat soukromý klíč Agent SSH, což vám umožní pohodlně spravovat soukromé klíče a používat je pro autentizaci.

Agent SSH může ukládat soukromé klíče a poskytovat je v kontextu zabezpečení aktuálního uživatele. Spusťte službu ssh-agent a nakonfigurujte AutoShell pro spuštění příkazů řízení služeb pomocí PowerShell:

set-service ssh-agent StartupType 'Automatic'
Start-Service ssh-agent

Přidejte svůj soukromý klíč do databáze ssh-agent:

ssh-add "C: \ Users \ youruser \ .ssh \ id_rsa"

Nebo tak:

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

Konfigurace OpenSSH ve Windows pro klíčovou autorizaci

Nyní je třeba veřejný klíč, který jste vygenerovali v klientovi, zkopírovat na váš server SSH (v tomto příkladu je to vzdálený počítač s Windows 10 1903 a nakonfigurovanou službou OpenSSH).

Již jsme podrobně prozkoumali konfiguraci serveru OpenSSH ve Windows.

Zkopírujte soubor id_rsa.pub do katalogu .ssh uživatelský profil, pod kterým se budete připojovat k serveru SSH. Například mám uživatele vytvořeného v systému Windows 10 admin, pak musím zkopírovat klíč do souboru C: \ Users \ admin \ .ssh \ signed_keys.

Klíč můžete zkopírovat na server SSH z klienta pomocí SCP:

scp C: \ Users \ youruser \ .ssh \ id_rsa.pub [email protected]: c: \ users \ admin \ .ssh \ signed_keys

Nyní se můžete připojit k serveru SSH bez zadání uživatelského hesla. A pokud jste pro soukromý klíč nenastavili heslo (přístupové heslo), okamžitě se automaticky připojíte ke vzdálenému serveru Windows..

Chcete-li se připojit přes SSH ke vzdálenému hostiteli, použijte následující příkaz:

ssh (uživatelské jméno) @ (jméno nebo IP adresa SSH serveru)

Například,

ssh [email protected]

To znamená, že se chcete připojit ke vzdálenému serveru SSH s adresou 192,166,90 na účet admin. Služba SSH Agent se automaticky pokusí použít k autorizaci dříve uložený soukromý klíč.

Pokud nechcete použít agent ssh-agent pro správu klíčů, můžete zadat cestu k soukromému klíči, který chcete použít pro autentizaci SSH:

ssh [email protected] -i "C: \ Users \ youruser \ .ssh \ id_rsa"

Pokud se vám nepodařilo připojit k vašemu SSH serveru pomocí klíče RSA a stále jste požádáni o heslo, je pravděpodobně uživatel, ke kterému se připojujete, členem místní skupiny administrátorů serveru (SID skupiny S-1-5-32-544). O tom dále.

Přihlášení SSH klíče pro místní správce Windows

OpenSSH používá speciální nastavení přístupu k klíčům pro uživatele s oprávněními místního správce Windows.

Nejprve musíte namísto klíče autorizovaných klíčů v uživatelském profilu použít soubor s klíči C: \ ProgramData \ ssh \administors_aproved_keys. Do tohoto textového souboru musíte přidat klíč (z bezpečnostních důvodů by k tomuto souboru měli mít práva pouze správci a SYSTÉM).

Chcete-li použít klíč autorizovaných klíčů z uživatelského profilu a nepřenášet data veřejného klíče do souboru správců_autorizovaných_klíčů, můžete komentovat řádek v konfiguračním souboru OpenSSH ("C: \ ProgramData \ ssh \sshd_config").

Komentujte řádky:

# Správci skupiny Match # AuthorizedKeysFile __PROGRAMDATA __ / ssh / administratorors_aproved_keys

Navíc v souboru sshd_config můžete povolit přihlášení pomocí klíčů RSA:

PubkeyAuthentication yes

A odepřít přístup pomocí hesla:

PasswordAuthentication no

Po uložení změn do souboru sshd_config nezapomeňte restartovat službu sshd.

restart-service sshd

Další malá nuance. Ve starších verzích OpenSSH jste museli udělit NT Service \ sshd právo číst autorizované_keys.

Chcete-li to provést, proveďte jednu z následujících akcí:

  • Nainstalujte modul Opensshutils: Install-Module - foror OpenSSHUtils -Scope AllUsers . Chcete-li změnit oprávnění k souboru, spusťte příkaz: Opravit-AutorizovánoKeyPermission -FilePath C: \ Users \ admin \ .ssh \ autor_keys ;
  • Změnit oprávnění k souborům NTFS pomocí modulu NTFSSecurity nebo icacls;
  • Nebo můžete režim deaktivovat v konfiguračním souboru sshd_config StrictModes. Ve výchozím nastavení je tento režim povolen a zakazuje ověřování klíčů, pokud soukromé a veřejné klíče nejsou dostatečně chráněny. Odkomentujte řádek #StrictModes ano, změnit na StrictModes no .

V systému Windows jste tedy nakonfigurovali ověřování SSH pomocí veřejného klíče RSA (certifikát). Nyní můžete tuto metodu ověření použít pro bezpečný přístup ke vzdáleným serverům, automatické zvyšování přesměrování portů v tunelu SSH, spouštění skriptů a dalších automatizačních úkolů.