Weboldal keresés

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.0

A 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-agent

Adja 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_rsa

OpenSSH: 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_keys

Egy 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 no

Ebben 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_config
PubkeyAuthentication yes

Ezenkí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 no

Ha 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.15

Ez 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])? yes

Az 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:xxxxxxx

Ha 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_keys

Ezenkívül letilthatja az SSH-jelszó bejelentkezést az sshd_config fájlban:

PasswordAuthentication no

Ne felejtse el újraindítani az sshd szolgáltatást az sshd_config módosításainak elvégzése után.

restart-service sshd

Ha 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 Administrators

Tehá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.

Kapcsolódó cikkek