Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Windows-környezetekben a legtöbb hitelesítés felhasználónév-jelszó pár használatával történik, amely jól működik a közös tartományt használó rendszerek esetében. Ha különböző IT-környezetekben dolgozik, például helyszíni és felhőalapú rendszerek között, ez a hitelesítés sebezhetővé válik a brute force támadásokkal szemben.
Ehhez képest a Linux-környezetek általában nyilvános/privát kulcspárokat használnak olyan hitelesítésre, amely nem igényel kitalálható jelszavakat. Az OpenSSH olyan eszközöket tartalmaz, amelyekkel támogathatja a kulcsalapú hitelesítést, különösen a következőket:
- ssh-keygen for generating secure keys.
- ssh-agent and ssh-add for securely storing private keys.
- scp and sftp to securely copy public key files during initial use of a server.
Ez a dokumentum áttekintést nyújt arról, hogyan használhatja ezeket az eszközöket Windows rendszeren a kulcsalapú hitelesítés és a Secure Shell (SSH) használatának megkezdéséhez. Ha nem ismeri az SSH-kulcskezelést, határozottan javasoljuk, hogy tekintse át az NIST 7966-os dokumentumát, amely az interaktív és automatizált hozzáférés-kezelés biztonságos rendszerhéjjal (SSH) történő biztonságával kapcsolatos.
Key pairs
A kulcspárok az egyes hitelesítési protokollok által használt nyilvános és titkos kulcsfájlokra vonatkoznak.
SSH public key authentication uses asymmetric cryptographic algorithms to generate two key files—one private and the other public. Minden titkos kulcsfájl egy jelszónak felel meg, és minden körülmények között védettnek kell maradnia. Ha valaki beszerzi a titkos kulcsot, önként bejelentkezhet bármely olyan SSH-kiszolgálóra, amelyhez hozzáférése van. A nyilvános kulcs az SSH-kiszolgálón található, és a titkos kulcs veszélyeztetése nélkül megosztható.
Az SSH-kiszolgáló és az ügyfél kulcsalapú hitelesítéssel összehasonlíthatja a titkos kulcshoz megadott felhasználónév nyilvános kulcsát. Ha a kiszolgálóoldali nyilvános kulcs nem érvényesíthető az ügyféloldali titkos kulcson, a hitelesítés meghiúsul.
A többtényezős hitelesítés kulcspárokkal implementálható egy jelszó megadásával a kulcspár létrehozásakor. További információ: Felhasználói kulcsok létrehozása. A rendszer a hitelesítés során kéri a jelszót. Az SSH-ügyfél a titkos kulcs jelenlétével kombinálva használja a jelszót a felhasználó hitelesítéséhez.
Important
A kulcsalapú hitelesítéssel megnyitott távoli munkamenetek nem rendelkeznek társított felhasználói hitelesítő adatokkal. Ennek eredményeképpen a munkamenet nem képes kimenő hitelesítésre felhasználóként. Ez a viselkedés terv szerint történik.
Hostkulcs generálása
A nyilvános kulcsok speciális hozzáférés-vezérlési listára (ACL) vonatkozó követelményekkel rendelkeznek, amelyek Windows rendszeren csak a rendszergazdák és a rendszerfelhasználók hozzáférését teszik lehetővé. A sshd
szolgáltatás első használatakor a gazdagép kulcspárja automatikusan létrejön.
Important
A cikkben szereplő parancsok futtatása előtt telepítenie kell az OpenSSH-kiszolgálót. További információ: Ismerkedés a Windows OpenSSH-val.
Alapértelmezés szerint manuálisan kell kezdenie sshd
. Ha úgy szeretné konfigurálni, hogy a kiszolgáló minden újraindításakor automatikusan elinduljon, futtassa a következő parancsokat egy emelt szintű PowerShell-parancssorból a kiszolgálón:
# Set the sshd service to be started automatically.
Get-Service -Name sshd | Set-Service -StartupType Automatic
# Start the sshd service.
Start-Service sshd
Because there's no user associated with the sshd
service, the host keys are stored under C:\ProgramData\ssh.
Felhasználói kulcs létrehozása
Kulcsalapú hitelesítés használatához először nyilvános/privát kulcspárokat kell létrehoznia az ügyfél számára. Kulcsfájlokat hozhat ssh-keygen.exe
létre, és a következő kulcsgenerálási algoritmusokat adhatja meg:
- Digitális aláírási algoritmus (DSA)
- Rivest–Shamir–Adleman (RSA)
- Elliptikus görbe digitális aláírási algoritmusa (ECDSA)
- Ed25519
Ha nem ad meg algoritmust, a rendszer az Ed25519-et használja. Ebben a példában erős algoritmust és kulcshosszt kell használni, például ECDSA-t.
Ha kulcsfájlokat szeretne létrehozni az ECDSA-algoritmussal, futtassa a következő parancsot egy PowerShell- vagy parancssori ablakban az ügyfélen:
ssh-keygen -t ecdsa
A parancs kimenetének a következő sorokhoz hasonlóan kell kinéznie, kivéve, hogy a username
helyére az ön felhasználóneve kerül:
Generating public/private ecdsa key pair.
Enter file in which to save the key (C:\Users\username/.ssh/id_ecdsa):
At the prompt, you can select Enter to accept the default file path, or you can specify a path or file name for your generated keys.
Ezután a rendszer arra kéri, hogy használjon jelszót a titkos kulcsfájlok titkosításához. Általában nem javasoljuk üres jelszó használatát, mert a jelszó a kulcsfájllal együttműködve kétfaktoros hitelesítést biztosít. Ebben a példában azonban üresen hagyhatja a jelszót.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\username/.ssh/id_ecdsa.
Your public key has been saved in C:\Users\username/.ssh/id_ecdsa.pub.
The key fingerprint is:
SHA256:OIzc1yE7joL2Bzy8!gS0j8eGK7bYaH1FmF3sDuMeSj8 username@LOCAL-HOSTNAME
The key's randomart image is:
+--[ECDSA 256]--+
| . |
| o |
| . + + . |
| o B * = . |
| o= B S . |
| .=B O o |
| + =+% o |
| *oo.O.E |
|+.o+=o. . |
+----[SHA256]-----+
Most már van egy nyilvános/privát ECDSA-kulcspár a megadott helyen. A .pub fájl a nyilvános kulcs, a bővítmény nélküli fájl pedig a titkos kulcs:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 6/3/2021 2:55 PM 464 id_ecdsa
-a---- 6/3/2021 2:55 PM 103 id_ecdsa.pub
A titkos kulcsfájl egyenértékű a jelszóval, és ugyanúgy kell védeni, mint a jelszót.
A ssh-agent
titkos kulcsokat biztonságosan tárolhatja a Windows-fiókjához társított Windows biztonsági környezetben. Ha úgy szeretné konfigurálni a ssh-agent
szolgáltatást, hogy a számítógép minden újraindításakor automatikusan elinduljon, és a titkos kulcs tárolásához ssh-add
futtassa a következő parancsokat egy emelt szintű PowerShell-parancssorban a kiszolgálón:
# By default, the ssh-agent service is disabled. Configure it to start automatically.
# Run the following command as an administrator.
Get-Service ssh-agent | Set-Service -StartupType Automatic
# Start the service.
Start-Service ssh-agent
# The following command should return a status of Running.
Get-Service ssh-agent
# Load your key files into ssh-agent.
ssh-add $env:USERPROFILE\.ssh\id_ecdsa
Miután hozzáadta a kulcsot a ssh-agent
szolgáltatáshoz az ügyfélen, a ssh-agent
szolgáltatás automatikusan lekéri a helyi titkos kulcsot, és átadja az SSH-ügyfélnek.
Important
We recommend that you back up your private key to a secure location and then delete it from the local system after you add it to the ssh-agent
service. A titkos kulcs nem kérhető le az ügynöktől, ha erős algoritmust használ, például az ECDSA-t ebben a példában. Ha nem fér hozzá a titkos kulcshoz, létre kell hoznia egy új kulcspárt, és frissítenie kell a nyilvános kulcsot minden olyan rendszeren, amellyel kommunikál.
A nyilvános kulcs üzembe helyezése
To use the user key that you created previously, you need to place the contents of your public key (\.ssh\id_ecdsa.pub) on the server into a text file. A fájl neve és helye attól függ, hogy a felhasználói fiók tagja-e a helyi rendszergazdai csoportnak vagy egy standard felhasználói fióknak. A következő szakaszok a standard és a rendszergazda felhasználókat is ismertetik.
Standard user
You need to place the contents of your public key (\.ssh\id_ecdsa.pub) on the server into a text file called authorized_keys
in C:\Users\username\.ssh\. A nyilvános kulcsot az OpenSSH scp
biztonságos fájlátviteli segédprogrammal vagy a PowerShell használatával másolhatja a fájlba.
A következő kóddal másolhatja a nyilvános kulcsot a kiszolgálóra. Az utolsó sorban cserélje le a username
-t a saját felhasználónevére. Kezdetben a rendszer kéri, hogy adja meg a kiszolgáló felhasználói fiókjának jelszavát.
# Get the public key file generated previously on your client.
$authorizedKey = Get-Content -Path $env:USERPROFILE\.ssh\id_ecdsa.pub
# Generate the PowerShell command to run remotely that copies the public key file generated previously on your client to the authorized_keys file on your server.
$remotePowershell = "powershell New-Item -Force -ItemType Directory -Path $env:USERPROFILE\.ssh; Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value '$authorizedKey'"
# Connect to your server and run the PowerShell command by using the $remotePowerShell variable.
ssh username@domain1@contoso.com $remotePowershell
Administrative user
You need to place the contents of your public key (\.ssh\id_ecdsa.pub) on the server into a text file called administrators_authorized_keys
in C:\ProgramData\ssh\. A nyilvános kulcsot az OpenSSH scp
biztonságos fájlátviteli segédprogrammal vagy a PowerShell használatával másolhatja a fájlba. A fájl ACL-ét úgy kell konfigurálni, hogy csak a rendszergazdák és a rendszerfelhasználók számára engedélyezze a hozzáférést.
A következő kóddal másolhatja a nyilvános kulcsot a kiszolgálóra, és konfigurálhatja az ACL-t. Az utolsó sorban cserélje le a username
-t a saját felhasználónevére. Kezdetben a rendszer kéri, hogy adja meg a kiszolgáló felhasználói fiókjának jelszavát.
Note
Ez a példa bemutatja a administrators_authorized_keys
fájl létrehozásának lépéseit. Ez a fájl csak rendszergazdai fiókokra vonatkozik. A felhasználó által megadott fájl helyett azt kell használnia a felhasználó profilhelyén belül.
# Get the public key file generated previously on your client.
$authorizedKey = Get-Content -Path $env:USERPROFILE\.ssh\id_ecdsa.pub
# Generate the PowerShell command to run remotely that copies the public key file generated previously on your client to the authorized_keys file on your server.
$remotePowershell = "powershell Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value '''$authorizedKey''';icacls.exe ""$env:ProgramData\ssh\administrators_authorized_keys"" /inheritance:r /grant ""Administrators:F"" /grant ""SYSTEM:F"""
# Connect to your server and run the PowerShell command by using the $remotePowerShell variable.
ssh username@domain1@contoso.com $remotePowershell
Az operációs rendszer nem angol nyelvű honosított verziói esetében a szkriptet módosítani kell, hogy ennek megfelelően tükrözze a csoportneveket. A csoportnevek engedélyeinek megadásakor előforduló hibák elkerülése érdekében a csoportnév helyett a biztonsági azonosítót (SID) használhatja. A SID lekéréséhez futtassa a következőt Get-LocalGroup | Select-Object Name, SID
: . Ha a csoportnév helyett a SID-et használja, azt csillag (*) kell megelőznie. In the following example, the Administrators group uses the SID S-1-5-32-544
:
$remotePowershell = "powershell Add-Content -Force -Path $env:ProgramData\ssh\administrators_authorized_keys -Value '''$authorizedKey''';icacls.exe ""$env:ProgramData\ssh\administrators_authorized_keys"" /inheritance:r /grant ""*S-1-5-32-544:F"" /grant ""SYSTEM:F"""
Ezek a lépések végrehajtják a kulcsalapú hitelesítés windowsos OpenSSH-val való használatához szükséges konfigurációt.
Miután futtatta ezeket a PowerShell-parancsokat, csatlakozhat a sshd
gazdagéphez bármely olyan ügyfélről, amely rendelkezik a titkos kulccsal.