Konfiguriranje pristnosti SSH ključev v sistemu Windows 10/2019

V tem članku bomo konfigurirali SSH avtentikacijo v sistemu Windows s pomočjo ključev RSA za varen dostop do oddaljenih sistemov. Pokazali bomo, kako ustvariti ključe (potrdila) RSA v sistemu Windows in konfigurirati strežnik OpenSSH v sistemu Windows 10 / Windows Server 2019 za avtorizacijo s ključi (brez gesel).

Preverjanje pristnosti s ključi SSH se v svetu Linuxa pogosto uporablja, v sistemu Windows pa se je ta funkcionalnost pojavila relativno nedavno. Ideja je, da se odjemalčev javni ključ doda strežniku SSH in ko je povezan, strežnik preveri ustrezen zasebni ključ za stranko.

Vsebina:

  • Ustvarjanje ključev RSA na odjemalcu Windows
  • Konfiguriranje OpenSSH v sistemu Windows za odobritev ključev
  • Prijava ključa SSH za lokalne skrbnike sistema Windows

Ustvarjanje ključev RSA na odjemalcu Windows

Na odjemalskem računalniku, iz katerega se boste z OpenSSH povezovali na oddaljeni strežnik Windows, morate ustvariti par RSA ključev (javnih in zasebnih). Zasebni ključ je shranjen v odjemalcu (ne dajajte ga nikomur!), Javni ključ pa je na strežniku SSH v datoteki pooblaščeni ključi. Če želite generirati ključe RSA v odjemalcu Windows, morate namestiti odjemalca OpenSSH.

V sistemih Windows 10 1809 in Windows Server 2019 je odjemalec OpenSSH nameščen kot ločena vgrajena komponenta:

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

V prejšnjih različicah sistema Windows lahko z GitHubom namestite vrata Win32-OpenSSH (glejte primer v članku o konfiguriranju strežnika SFTP v sistemu Windows).

Zaženite redno (neprivilegirana seja PowerShell) in ustvarite par ključev RSA 2048 z ukazom:

ssh-keygen

Program vas bo pozval, da določite geslo za zaščito zasebnega ključa. Če določite geslo, boste morali vsakič, ko to ključ uporabite za pooblastilo SSH, vnesti to geslo. Nisem določil gesla za ključ (ni priporočljivo).

Program ssh-keygen bo ustvaril imenik .ssh v profilu trenutnega uporabnika sistema Windows (C: \ Users \ your_username) in vanj vstavite 2 datoteki:

  • id_rsa - zasebni ključ
  • id_rsa.pub - javni ključ

Ko ustvarite ključe, lahko zasebni ključ dodate v storitev SSH agent, ki vam omogoča priročno upravljanje zasebnih ključev in njihovo uporabo za preverjanje pristnosti.

Agent SSH lahko shrani zasebne ključe in jih posreduje v varnostnem kontekstu trenutnega uporabnika. Zaženite storitev ssh-agent in konfigurirajte AutoShell za zagon ukazov za upravljanje storitev z uporabo PowerShell:

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

Dodajte svoj zasebni ključ v bazo podatkov ssh-agent:

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

Ali pa tako:

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

Konfiguriranje OpenSSH v sistemu Windows za odobritev ključev

Zdaj je treba javni ključ, ki ste ga ustvarili v odjemalcu, kopirati na strežnik SSH (v tem primeru gre za oddaljeni računalnik z Windows 10 1903 in konfigurirano storitev OpenSSH).

Podrobno smo že pregledali konfiguracijo strežnika OpenSSH v operacijskem sistemu Windows.

Kopiraj datoteko id_rsa.pub v katalog .ssh uporabniški profil, pod katerim se boste povezali na SSH strežnik. Na primer imam uporabnika, ustvarjenega v sistemu Windows 10 administrator, potem moram kopirati ključ v datoteko C: \ Uporabniki \ admin \ .ssh \ pooblaščeni ključi.

Ključ lahko kopirate na strežnik SSH iz odjemalca s pomočjo SCP:

scp C: \ Uporabniki \ youruser \ .ssh \ id_rsa.pub [email protected]: c: \ uporabniki \ admin \ .ssh \ pooblaščeni ključi

Zdaj se lahko povežete s strežnikom SSH, ne da bi vnesli uporabniško geslo. Če za zasebni ključ niste nastavili gesla (gesla), se boste takoj samodejno povezali z oddaljenim strežnikom Windows.

Če se prek SSH povežete z oddaljenim gostiteljem, uporabite naslednji ukaz:

ssh (uporabniško ime) @ (ime ali IP naslov SSH strežnika)

Na primer,

ssh [email protected]

To pomeni, da se želite povezati z oddaljenim strežnikom SSH z naslovom 192.168.1.90 pod račun administrator. Storitev agenta SSH bo samodejno poskusila uporabiti predhodno shranjeni zasebni ključ za avtorizacijo.

Če ne želite uporabljati ssh-agenta za upravljanje ključev, lahko določite pot do zasebnega ključa, ki ga želite uporabiti za preverjanje pristnosti SSH:

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

Če se s ključem RSA niste mogli povezati s strežnikom SSH in vas še vedno zahteva geslo, je najverjetneje uporabnik, s katerim se povezujete, član lokalne skrbniške skupine strežnikov (SID skupine S-1-5-32-544). O tem naprej.

Prijava ključa SSH za lokalne skrbnike sistema Windows

OpenSSH uporablja posebne nastavitve dostopa do ključev za uporabnike z lokalnimi skrbniškimi pravicami sistema Windows.

Najprej morate namesto pooblaščene tipke v uporabniškem profilu uporabiti datoteko s tipkama C: \ ProgramData \ ssh \Administrators_authorized_keys. V to besedilno datoteko morate dodati svoj ključ (iz varnostnih razlogov bi morali biti samo skrbniki in SYSTEM pravice do te datoteke).

Če želite uporabiti ključ pooblaščenih ključev iz uporabniškega profila in ne prenesti podatkov javnega ključa v datoteko administrators_authorized_keys, lahko komentirate vrstico v konfiguracijski datoteki OpenSSH ("C: \ ProgramData \ ssh \sshd_config").

Komentirajte vrstice:

# Skrbniki skupinskih skupin # Pooblaščeni ključiFile __PROGRAMDATA __ / ssh / administrators_authorized_keys

Poleg tega lahko v datoteki sshd_config omogočite prijavo s ključi RSA:

PubkeyAuthentication da

In zavrnite dostop z geslom:

Št. Overjanja gesla št

Ko shranite spremembe v datoteko sshd_config, ne pozabite znova zagnati storitve sshd.

vnovični zagon storitve sshd

Še en majhen odtenek. V starejših različicah OpenSSH ste morali NT Service \ sshd podeliti pravico za branje pooblaščenih ključev.

To storite tako:

  • Namestite modul Odpre se: Namestite-modul -zaprite OpenSSHUtils -Scope AllUsers . Če želite spremeniti dovoljenja v datoteki, izvedite ukaz: Popravila-pooblaščenaKeyPermission -FilePath C: \ Uporabniki \ admin \ .ssh \ pooblaščeni_keji ;
  • Spremenite dovoljenja datotek NTFS z modulom varnosti NTFSS varnost ali icacls;
  • Lahko pa onemogočite način v konfiguracijski datoteki sshd_config StrictModes. Ta način je privzeto omogočen in prepoveduje preverjanje pristnosti ključev, če zasebni in javni ključi niso dovolj zaščiteni. Odklopi črto #StrictModes da, sprememba v StrictModes št .

Torej, SSH pristnost ste konfigurirali v sistemu Windows z uporabo javnega ključa RSA (potrdilo). Zdaj lahko to metodo preverjanja pristnosti uporabite za varen dostop do oddaljenih strežnikov, samodejno dvigovanje posredovanja vrat v tunelu SSH, zagon skriptov in druge naloge za avtomatizacijo.