SSH kulcs-hitelesítés konfigurálása a Windows 10/2019 rendszerben

Ebben a cikkben az SSH hitelesítést a Windows rendszerben az RSA kulcsok segítségével konfiguráljuk a távoli rendszerek biztonságos eléréséhez. Megmutatjuk, hogyan lehet RSA kulcsokat (tanúsítványokat) létrehozni a Windows rendszerben, és hogyan konfigurálhatjuk az OpenSSH szervert a Windows 10 / Windows Server 2019 rendszerben kulcsokkal történő engedélyezéshez (jelszavak nélkül).

Az SSH kulcsokkal történő hitelesítést széles körben használják a Linux világában, és Windows rendszeren ez a funkció viszonylag nemrégiben jelent meg. Az ötlet az, hogy az ügyfél nyilvános kulcsát hozzáadjuk az SSH szerverhez, és amikor csatlakozik, a szerver ellenőrzi az ügyfél megfelelő magánkulcsát..

Tartalom:

  • RSA kulcsok generálása Windows kliensen
  • Az OpenSSH konfigurálása a Windows rendszeren a kulcsfontosságú hitelesítéshez
  • SSH kulcs bejelentkezés a helyi Windows rendszergazdák számára

RSA kulcsok generálása Windows kliensen

Az ügyfélszámítógépen, ahonnan csatlakozik egy távoli Windows szerverhez az OpenSSH segítségével, elő kell hoznia egy pár RSA kulcsot (nyilvános és magán). A privát kulcsot az ügyfél tárolja (ne add senkinek!), És a nyilvános kulcsot egy fájlba helyezi az SSH szerverre authorized_keys. Az RSA kulcsok létrehozásához egy Windows kliensen telepítenie kell az OpenSSH klienst.

Windows 10 1809 és Windows Server 2019 rendszereken az OpenSSH klienst külön beépített összetevőként telepíti:

Add-WindowsCapability -Online -Név OpenSSH.Client ~~~~ 0.0.1.0

A Windows korábbi verzióiban telepítheti a Win32-OpenSSH portot a GitHub segítségével (lásd az SFTP-kiszolgáló Windows konfigurálásáról szóló cikk példáját).

Indítson el egy rendszeres (nem előnyben részesített PowerShell-munkamenetet), és hozzon létre egy pár RSA 2048 kulcsot a következő paranccsal:

ssh-keygen

A segédprogram megkérdezi, hogy adja meg a jelszót a magánkulcs védelme érdekében. Ha megad egy jelszót, akkor minden alkalommal, amikor ezt a kulcsot használja az SSH hitelesítéshez, meg kell adnia ezt a jelszót. Nem adtam meg a kulcshoz tartozó jelszót (nem ajánlott).

Az ssh-keygen segédprogram létrehoz egy könyvtárat .ssh az aktuális Windows felhasználó profiljában (C: \ Users \ your_username), és tegyen bele 2 fájlt:

  • id_rsa - privát kulcs
  • id_rsa.pub - nyilvános kulcs

A kulcsok létrehozása után hozzáadhatja a privát kulcsot a szolgáltatáshoz SSH ügynök, amely lehetővé teszi a magánkulcsok kényelmes kezelését és hitelesítéshez történő felhasználását.

Az SSH Agent tárolhatja a magánkulcsokat és biztosítja azokat az aktuális felhasználó biztonsági környezetében. Indítsa el az ssh-agent szolgáltatást, és konfigurálja az AutoShell szolgáltatást vezérlő parancsok elindításához a PowerShell használatával:

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

Adja hozzá a privát kulcsát az ssh-agent adatbázisához:

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

Vagy így:

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

Az OpenSSH konfigurálása a Windows rendszeren a kulcsfontosságú hitelesítéshez

Most az ügyfélen létrehozott nyilvános kulcsot át kell másolni az SSH szerverre (ebben a példában egy távoli számítógép, amelyen Windows 10 1903 található és konfigurált OpenSSH szolgáltatás)..

Már részletesen megvizsgáltuk az OpenSSH szerver konfigurációját a Windows rendszerben.

Fájl másolása id_rsa.pub a katalógusba .ssh felhasználói profil, amely alatt csatlakozik az SSH szerverhez. Például van egy felhasználó, aki a Windows 10 rendszerben készült admin, akkor a kulcsot át kell másolnom egy fájlba C: \ Felhasználók \ admin \ .ssh \ engedélyezett kulcsok.

A kulcsot az SSH kiszolgálóra másolhatja az ügyféltől az SCP használatával:

scp C: \ Felhasználók \ felhasználója \ .ssh \ id_rsa.pub [email protected]: c: \ felhasználók \ admin \ .ssh \ engedélyezett_kulcsok

Most már csatlakozhat az SSH szerverhez felhasználói jelszó megadása nélkül. És ha még nem állított be jelszót (jelmondatot) a privát kulcshoz, akkor azonnal automatikusan csatlakozik a távoli Windows szerverhez.

SSH-n keresztül távoli gazdagéphez történő csatlakozáshoz használja a következő parancsot:

ssh (felhasználónév) @ (az SSH szerver neve vagy IP címe)

Például,

ssh [email protected]

Ez azt jelenti, hogy csatlakozni szeretne egy távoli SSH szerverhez a címmel 192.168.1.90 számla alatt admin. Az SSH Agent szolgáltatás automatikusan megkísérel egy korábban tárolt privát kulcsot használni a hitelesítéshez.

Ha nem akarja használni az ssh-agent-t a kulcskezeléshez, megadhatja az SSH-hitelesítéshez használni kívánt privát kulcs elérési útját:

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

Ha nem sikerült csatlakozni az SSH szerverhez az RSA kulcs segítségével, és továbbra is jelszót kérnek, akkor valószínűleg a felhasználó, amellyel csatlakozik, a helyi szerver adminisztrátorok csoportjának tagja (az S-1-5-32-544 csoport SID). Erről tovább.

SSH kulcs bejelentkezés a helyi Windows rendszergazdák számára

Az OpenSSH speciális kulcshozzáférési beállításokat használ a helyi Windows rendszergazdai jogosultságokkal rendelkező felhasználók számára.

Mindenekelőtt, a felhasználói profilban szereplő engedélyezett kulcsok helyett a fájlt a C: \ ProgramData \ ssh \ kulcsokkal kell használni.administrators_authorized_keys. A kulcsot hozzá kell adnia ehhez a szövegfájlhoz (biztonsági okokból csak a rendszergazdák és a SYSTEM jogosultak lesznek erre a fájlra).

Ha az engedélyezett_kulcs kulcsot használja a felhasználói profilból, és nem továbbítja a nyilvános kulcs adatait az adminisztrátorok_autorizált kulcsok fájlba, kommentálhatja az sort az OpenSSH konfigurációs fájlban ("C: \ ProgramData \ ssh \sshd_config„).

Kommentáld a sorokat:

#Match csoport adminisztrátorai # AuthorizedKeysFile __PROGRAMDATA __ / ssh / administrators_authorized_keys

Ezenkívül az sshd_config fájlban engedélyezheti a bejelentkezést az RSA kulcsokkal:

PubkeyHitelesítés igen

És megtagadhatja a hozzáférést jelszóval:

JelszóHitelesítési szám

Az sshd_config fájl módosításainak mentése után ne felejtse el újraindítani az sshd szolgáltatást.

restart-service sshd

Egy másik apró árnyalat. Az OpenSSH régebbi verzióiban az NT Service \ sshd-nek meg kellett adnia a jogosult kulcsok olvasási jogát.

Ehhez hajtsa végre a következők egyikét:

  • Telepítse a modult OpenSSHUtils: Telepítő modul - Az OpenSSHUtils kényszerítése - Az összes felhasználó használata . A fájl engedélyének megváltoztatásához hajtsa végre a következő parancsot: Javítás-AuthorizedKeyPermission -FilePath C: \ Felhasználók \ admin \ .ssh \ engedélyezett_kulcsok ;
  • Az NTFS fájljogosultságainak módosítása az NTFSSecurity modul vagy az icacls segítségével;
  • Vagy letilthatja az üzemmódot az sshd_config konfigurációs fájlban StrictModes. Alapértelmezés szerint ez az üzemmód engedélyezve van, és tiltja a kulcsok hitelesítését, ha a privát és a nyilvános kulcsok nem vannak megfelelő védelemben. Távolítsa el a sort #StrictModes igen, váltani StrictModes no .

Tehát konfigurálta az SSH hitelesítést a Windows rendszerben az RSA nyilvános kulcs (tanúsítvány) használatával. Most ezt a hitelesítési módszert használhatja a távoli szerverek biztonságos eléréséhez, automatikusan növelve a port továbbítást az SSH alagútban, futtatva szkripteket és más automatizálási feladatokat..