SSH nyilvános kulcsú hitelesítés konfigurálása Windows rendszeren
Ebben a cikkben bemutatjuk, hogyan konfigurálhatja az SSH-hitelesítést a Windows rendszerben RSA vagy EdDSA kulcsok használatával. Nézzük meg, hogyan hozhat létre nyilvános és privát kulcspárt Windows rendszeren, és hogyan konfigurálhat OpenSSH-kiszolgálót Windows 10/11 vagy Windows Server 2019/2022 rendszeren kulcsalapú hitelesítéshez (jelszavak nélkül).
Az SSH-kulcs alapú hitelesítést széles körben használják a Linux világában, de a Windowsban ez nemrég jelent meg. Az ötlet az, hogy a kliens nyilvános kulcsát hozzáadják az SSH-kiszolgálóhoz, és amikor egy kliens megpróbál csatlakozni hozzá, a szerver ellenőrzi, hogy az ügyfél rendelkezik-e a megfelelő privát kulccsal. Ily módon egy távoli felhasználó jelszó megadása nélkül hitelesítheti magát a Windows rendszerben.
SSH kulcspár létrehozása Windows rendszeren
Létre kell hoznia két SSH-kulcsot (nyilvános és privát) az ügyfélszámítógépen, amelyeket az OpenSSH-t futtató távoli Windows-állomáshoz való csatlakozáshoz fog használni. A privát kulcsot a kliens oldalon tárolja (tartsa biztonságban a kulcsot, és ne ossza meg senkivel!), és egy nyilvános kulcs hozzáadódik az SSH-kiszolgálón található authorized_keys fájlhoz. Az RSA-kulcsok Windows-kliensen történő létrehozásához telepítenie kell az OpenSSH-ügyfelet.
Windows 10/11 és Windows Server 2019/2022 rendszeren az OpenSSH-ügyfél opcionális Windows-szolgáltatásként kerül telepítésre a PowerShell segítségével:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0A Windows korábbi verzióiban telepítheti a Win32-OpenSSH portot a GitHubból (lásd a példát az SFTP (SSH FTP) kiszolgáló Windows rendszeren történő beállításáról szóló cikkben).
Nyisson meg egy szabványos (nem emelt szintű) PowerShell-munkamenetet, és hozzon létre egy pár ED25519 kulcsot a következő paranccsal:
ssh-keygen -t ed25519
Alapértelmezés szerint az ssh-keygen eszköz RSA 2048 kulcsokat állít elő. Jelenleg az RSA kulcsok helyett az ED25519 használata javasolt.
A rendszer kéri, hogy adjon meg egy jelszót a privát kulcs védelméhez. Ha megadja a jelszót, akkor azt minden alkalommal meg kell adnia, amikor ezt a kulcsot SSH-hitelesítéshez használja. Nem adtam meg jelszót (nem ajánlott).
Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\myuser/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\myuser/.ssh/id_ed25519.
Your public key has been saved in C:\Users\myuser/.ssh/id_ed25519.pub.
The key fingerprint is: SHA256:xxxxxxxx myuser@computername
The key's randomart image is:
+--[ED25519 256]--+
+----[SHA256]-----+
Az Ssh-keygen létrehozza az .ssh könyvtárat egy aktuális Windows-felhasználó profiljában (
%USERPROFILE%\.ssh), és hozzon létre 2 fájlt:
id_ed25519- privát kulcs (ha létrehozott egy RSA-kulcsot, a fájl neve lesz
id_rsa)
id_ed25519.pub- nyilvános kulcs (egy hasonló RSA-kulcsot hívnak
id_rsa.pub
Az SSH-kulcsok előállítása után hozzáadhatja privát kulcsát az SSH Agent szolgáltatáshoz, amely lehetővé teszi a privát kulcsok kényelmes kezelését és hitelesítésre való felhasználását.
Az SSH Agent szolgáltatás tárolhatja az Ön privát kulcsait, és az aktuális felhasználó biztonsági környezetében biztosíthatja azokat. Futtassa az ssh-agent szolgáltatást, és állítsa be, hogy automatikusan elinduljon a PowerShell szolgáltatáskezelési parancsokkal:
set-service ssh-agent StartupType ‘Automatic’
Start-Service ssh-agentAdja hozzá privát kulcsát az ssh-agent adatbázishoz:
ssh-add "C:\Users\youruser\.ssh\id_ed25519"Identity added: C:\Users\youruser\.ssh\id_ed25519 (youruser@computername)Vagy a következőképpen:
ssh-add.exe $ENV:UserProfile\.ssh\id_rsaOpenSSH: Kulcsalapú hitelesítés konfigurálása nyilvános kulccsal Windows rendszeren
Most át kell másolnia a nyilvános SSH-kulcsot az SSH-kiszolgálóra. Ebben a példában az SSH-kiszolgáló egy távoli Windows 11-es gép, amelyen telepítve és konfigurálva van az OpenSSH szolgáltatás.
Megtekintheti a „Hogyan konfiguráljunk OpenSSH-kiszolgálót Windows rendszeren? ”.
Másolja az id_ed25519.pub fájlt az .ssh könyvtárba annak a felhasználónak a profiljában, amelyet az SSH-kiszolgálóhoz való csatlakozáshoz használni fog. Például van egy user1 fiókom a távoli Windows 11-es eszközömön, ezért át kell másolnom a kulcsot a C:\Users mappába. \user1\.ssh uthorized_keys.
A nyilvános kulcsot az SSH-kiszolgálóra másolhatja a kliensről SCP használatával:
scp C:\Users\youruser\.ssh\id_rsa.pub admin@192.168.1.15:c:\users\admin\.ssh\authorized_keysEgy Author_keys fájlhoz több nyilvános kulcsot is hozzáadhat.
A nyilvános kulcsú hitelesítés alapértelmezés szerint le van tiltva az OpenSSH-kiszolgálón Windows rendszeren. Ezt az sshd_config-ban ellenőrizheti. Az OpenSSH-ban engedélyezett hitelesítési módszerek listájának lekérésének legegyszerűbb módja a következő PowerShell-parancs használata (a Select-String a grep analógja a PowerShellben):
cat "C:\ProgramData\ssh\sshd_config"| Select-String "Authentication"#PubkeyAuthentication yes
#HostbasedAuthentication no
#HostbasedAuthentication
PasswordAuthentication yes
#GSSAPIAuthentication noEbben a példában a PubkeyAuthentication sor megjegyzéssel van ellátva, ami azt jelenti, hogy ez a hitelesítési módszer le van tiltva. Nyissa meg az sshd_config fájlt a jegyzettömbbel, és törölje a megjegyzéseket a következő sorból:
Notepad C:\ProgramData\ssh\sshd_configPubkeyAuthentication yesEzenkívül le kell tiltania a StrictModes opciót az sshd_config konfigurációs fájlban. Alapértelmezés szerint ez a mód engedélyezve van, és megakadályozza az SSH-kulcs alapú hitelesítést, ha a privát és nyilvános kulcsok nincsenek megfelelően védve. Törölje a sor megjegyzését
#StrictModes yesés változtassa meg
StrictModes noHa natív SSH-kliens használatával távoli gazdagéphez szeretne csatlakozni, használja a következő parancsot:
ssh (username)@(SSH server name or IP address)Például:
ssh admin@192.168.1.15Ez azt jelenti, hogy a 192.168.1.15 IP-című távoli SSH-kiszolgálóhoz szeretne csatlakozni a user1 fiók alatt. Az SSH Agent szolgáltatás automatikusan megpróbálja használni az Ön privát kulcsát a távoli gazdagépen történő hitelesítéshez.
Ha nem szeretné az ssh-agent szolgáltatást használni az SSH-kulcsok kezelésére, megadhatja az SSH-hitelesítéshez használandó privát kulcsfájl elérési útját:
ssh user1@192.168.1.15 -i "C:\Users\youuser\.ssh\id_ed25519"Ha Active Directory-tartományból származó felhasználói fiókkal szeretne SSH-állomást csatlakoztatni, használja a következő formátumot:
ssh jsmith@a-d.site@192.168.1.15 -i <private_key_absolute_path>
Az első csatlakozáskor hozzá kell adnia az SSH-kiszolgáló kulcsának ujjlenyomatát a megbízható listához. Írja be az yes -> Enter parancsot.
The authenticity of host '192.168.1.15 (192.168.1.15)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxx.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yesAz ETW-naplózást a Windows OpenSSH használja az SSH-naplók tárolására egyszerű szöveges fájlok helyett. Az SSH-kulcs alapú hitelesítési naplókat a Windows Eseménynaplóban ellenőrizheti (Alkalmazás- és szolgáltatásnaplók -> OpenSSH -> Működési).
Ha sikeres az SSH-kapcsolat a privát kulccsal, a következő esemény jelenik meg az OpenSSH-naplóban:
EventID 4
sshd: Accepted publickey for locadm from 192.168.15.20 port 55772 ssh2: ED25519 SHA256:xxxxxxxHa nem tudott csatlakozni az SSH-kiszolgálóhoz a privát kulcsával, és továbbra is jelszót kell megadnia, akkor valószínű, hogy a felhasználói fiók, amelyhez csatlakozni próbál, a helyi Windows rendszergazdák csoportjának (a csoportnak) a tagja. A SID az
S-1-5-32-544). Később megbeszéljük.
Windows naplózása SSH-kulccsal az Adminisztratív felhasználó alatt
Az OpenSSH speciális kulcsalapú hitelesítési beállításokat használ a Windows rendszergazdai felhasználói fiókokhoz.
A felhasználói profilban az authorized_keys kulcs helyett a C:\ProgramData\ssh\administrators_authorized_keys fájlt kell használnia. Adja hozzá a nyilvános SSH-kulcsát ehhez a szövegfájlhoz (biztonsági okokból csak a rendszergazdáknak és a RENDSZER csoportoknak kell jogosultságuk a fájl olvasására).
Módosíthatja egy fájl NTFS-engedélyeit:
Az icacls eszköz:
icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"vagy a Get-Acl és a Set-Acl PowerShell parancsmagok használatával:
get-acl "$env:programdata\ssh\ssh_host_rsa_key" | set-acl "$env:programdata\ssh\administrators_authorized_keys"
Ezt követően az SSH-kulcs hitelesítés akkor is működik, ha a StrictModes le van tiltva.
Annak érdekében, hogy egy felhasználói profilból használhassa a authorised_keys fájlt, és ne helyezze át a nyilvános kulcs adatait az administrators_authorized_keys fájlba, megjegyzést fűzhet egy sort az OpenSSH konfigurációs fájlhoz (C:\ProgramData\ssh\sshd_config).
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keysEzenkívül letilthatja az SSH-jelszó bejelentkezést az sshd_config fájlban:
PasswordAuthentication noNe felejtse el újraindítani az sshd szolgáltatást az sshd_config módosításainak elvégzése után.
restart-service sshdHa a PasswordAuthentication no-t állítja be, és rosszul konfigurálja az SSH-kulcs hitelesítést, akkor hibaüzenet jelenik meg az ssh-n keresztüli csatlakozáskor:
user1@192.168.13.15: Permission denied (publickey,keyboard-interactive).Használhatja a PermitRootLogin opciót az OpenSSH-ban Linuxon az SSH gyökérbejelentkezés korlátozására. Ez a direktíva nem alkalmazható a Windows OpenSSH rendszerben, és a DenyGroups paramétert kell használnia az ssh bejelentkezés megtagadásához adminisztrátori fiókok alatt:
DenyGroups AdministratorsTehát egy kulcspár segítségével konfigurálta az SSH-hitelesítést a Windows rendszerben. Mostantól ezzel a hitelesítési módszerrel biztonságosan hozzáférhet a távoli kiszolgálókhoz, automatikusan továbbíthatja a portokat az SSH-alagútban, futtathat parancsfájlokat, és végrehajthat egyéb automatizálási feladatokat.













