Konfiguriranje provjere autentičnosti SSH ključa u sustavu Windows 10/2019

U ovom ćemo članku konfigurirati SSH provjeru autentičnosti u sustavu Windows koristeći RSA ključeve za siguran pristup udaljenim sustavima. Pokazat ćemo kako generirati RSA ključeve (certifikate) u sustavu Windows i konfigurirati OpenSSH poslužitelj u sustavu Windows 10 / Windows Server 2019 za autorizaciju pomoću ključeva (bez lozinki).

Autentifikacija SSH ključevima široko se koristi u Linux svijetu, a na Windowsima se ta funkcionalnost pojavila relativno nedavno. Ideja je da se javni ključ klijenta doda SSH poslužitelju i, kada je spojen, poslužitelj provjerava odgovarajući privatni ključ za klijenta.

sadržaj:

  • Generiranje RSA ključeva na Windows klijentu
  • Konfiguriranje OpenSSH-a na Windows za autorizaciju ključeva
  • Prijavljivanje SSH ključa za lokalne Windows administratore

Generiranje RSA ključeva na Windows klijentu

Na klijentskom računalu s kojeg ćete se povezati s udaljenim Windows serverom s OpenSSH, morate generirati par RSA ključeva (javnih i privatnih). Privatni ključ pohranjuje se na klijentu (ne dajte nikome!), A javni ključ postavlja se na SSH poslužitelj u datoteku authorized_keys. Da biste generirali RSA ključeve na Windows klijentu, morate instalirati OpenSSH klijent.

Na Windows 10 1809 i Windows Server 2019 klijent OpenSSH instaliran je kao zasebna ugrađena komponenta:

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

U prethodnim verzijama sustava Windows možete instalirati Win32-OpenSSH port s GitHubom (pogledajte primjer u članku o konfiguriranju SFTP poslužitelja u sustavu Windows).

Pokrenite redovnu (neprivilegiranu sesiju PowerShell-a) i generirajte par RSA 2048 tipki s naredbom:

ssh-keygen

Program će tražiti da navedete lozinku za zaštitu privatnog ključa. Ako navedete lozinku, onda će vam trebati svaki put kada koristite ovaj ključ za SSH autorizaciju. Nisam odredio lozinku za ključ (nije preporučljivo).

Uslužni program ssh-keygen stvorit će direktorij .ssh u profil trenutnog Windows korisnika (C: \ Users \ your_username) i stavite u nju dvije datoteke:

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

Nakon izrade tipki, privatni ključ možete dodati u uslugu SSH agent, koji vam omogućuje da prikladno upravljate privatnim ključevima i koristite ih za provjeru autentičnosti.

SSH agent može pohraniti privatne ključeve i dostaviti ih u sigurnosnom kontekstu trenutnog korisnika. Pokrenite uslugu ssh-agent i konfigurirajte AutoShell za pokretanje naredbi za upravljanje uslugama pomoću PowerShell:

set-service ssh-agent StartupType 'Automatski'
Ssh-agent Start-Service

Dodajte svoj privatni ključ u bazu podataka ssh-agent:

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

Ili tako:

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

Konfiguriranje OpenSSH-a na Windows za autorizaciju ključeva

Sada javni ključ koji ste generirali na klijentu treba kopirati na vaš SSH poslužitelj (u ovom primjeru to je udaljeno računalo s Windows 10 1903 i konfigurirana usluga OpenSSH).

Već smo detaljno ispitali konfiguraciju OpenSSH poslužitelja u sustavu Windows.

Kopirajte datoteku id_rsa.pub u katalog .ssh korisnički profil pod kojim ćete se povezati na SSH poslužitelj. Na primjer, imam korisnika stvorenog u sustavu Windows 10 admin, tada moram kopirati ključ u datoteku C: \ Korisnici \ admin \ .ssh \ autorizirani ključevi.

Možete kopirati ključ na SSH poslužitelj s klijenta pomoću SCP-a:

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

Sada se možete povezati na SSH poslužitelj bez unosa korisničke lozinke. A ako niste postavili lozinku (zaporku) za privatni ključ, odmah ćete se automatski povezati s vašim udaljenim Windows poslužiteljem.

Da biste se putem SSH-a povezali s udaljenim računalom, koristite sljedeću naredbu:

ssh (korisničko ime) @ (ime ili IP adresa SSH servera)

Na primjer,

ssh [email protected]

To znači da se želite povezati s udaljenim SSH serverom s adresom 192.168.1.90 pod račun admin. Usluga SSH agenta automatski će pokušati koristiti prethodno pohranjeni privatni ključ za autorizaciju.

Ako ne želite koristiti ssh-agent za upravljanje ključevima, možete odrediti put do privatnog ključa koji želite koristiti za SSH provjeru identiteta:

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

Ako se niste mogli povezati na svoj SSH poslužitelj pomoću RSA ključa, a i dalje vam se traži lozinka, najvjerojatnije je korisnik s kojim se povezujete član grupe administratora lokalnog poslužitelja (SID grupe S-1-5-32-544). O ovome dalje.

Prijavljivanje SSH ključa za lokalne Windows administratore

OpenSSH koristi posebne postavke pristupa ključu za korisnike s lokalnim Windows administrativnim povlasticama.

Prije svega, umjesto tipke autorizirani_ključivi u korisničkom profilu, morate koristiti datoteku s tipkama C: \ ProgramData \ ssh \administrators_authorized_keya. Morate dodati svoj ključ ovoj tekstualnoj datoteci (iz sigurnosnih razloga samo administratori i SYSTEM trebaju imati prava na ovu datoteku).

Da biste koristili ključ autorizirani ključevi s korisničkog profila i ne prenijeli podatke javnog ključa u datoteku administrators_authorized_keys, možete komentirati redak u konfiguracijskoj datoteci OpenSSH ("C: \ ProgramData \ ssh \sshd_config„).

Komentirajte retke:

Administratori #Match Grupe # AuthorizedKeysFile __PROGRAMDATA __ / ssh / administrators_authorized_keys

Uz to, u datoteci sshd_config možete omogućiti prijavu pomoću RSA ključeva:

PubkeyAuthentication da

I zabranite pristup lozinkom:

PasswordAuthentication br

Nakon što spremite promjene u datoteku sshd_config, ne zaboravite ponovo pokrenuti sshd uslugu.

restart-usluga sshd

Još jedna mala nijansa. U starijim verzijama OpenSSH-a morali ste dodijeliti NT Service \ sshd pravo čitanja ovlaštenih_ključiva.

Da biste to učinili, napravite jedno od sljedećeg:

  • Instalirajte modul OpenSSHUtils: Instalirajte-Modul -Force OpenSSHUtils -Scope AllUsers . Da biste promijenili dopuštenja za datoteku, izvršite naredbu: Popravka-autoriziraniKeyPermission -FilePath C: \ Korisnici \ admin \ .ssh \ ovlašteni_kejevi ;
  • Promijenite dopuštenja NTFS datoteke pomoću NTFSS sigurnosnog modula ili icacls;
  • Ili možete onemogućiti način rada u konfiguracijskoj datoteci sshd_config StrictModes. Ovaj je način prema zadanim postavkama omogućen i zabranjuje provjeru autentičnosti ključeva ako privatni i javni ključevi nisu dovoljno zaštićeni. Odkomentirajte liniju #StrictModes da, promjena u StrictModes br .

Dakle, konfigurirali ste SSH provjeru autentičnosti u sustavu Windows koristeći javni ključ (certifikat) RSA. Sada možete koristiti ovu metodu provjere autentičnosti za siguran pristup udaljenim poslužiteljima, automatsko podizanje prosljeđivanja vrata u SSH tunelu, pokretanje skripti i ostale zadatke za automatizaciju..