Részletes lépések: SSH-kulcsok létrehozása és kezelése Linux rendszerű virtuális gépek azure-beli hitelesítéséhez
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai
A biztonságos rendszerhéj (SSH) kulcspárjával létrehozhat egy Linux rendszerű virtuális gépet, amely SSH-kulcsokat használ a hitelesítéshez. Ez a cikk bemutatja, hogyan hozhat létre és használhat SSH RSA nyilvános-privát kulcsú fájlpárokat SSH-ügyfélkapcsolatokhoz.
Ha az SSH-kulcsok részletesebb magyarázata helyett gyors parancsokat szeretne, olvassa el a Nyilvános és titkos SSH-kulcspárok azure-beli Linux rendszerű virtuális gépekhez való létrehozását ismertető témakört.
Az SSH-kulcsok létrehozásához és a Linux rendszerű virtuális gépekhez való csatlakozáshoz windowsos számítógépről való csatlakozáshoz lásd: SSH-kulcsok használata a Windowssal az Azure-ban. Az Azure Portallal SSH-kulcsokat is létrehozhat és kezelhet virtuális gépek létrehozásához a portálon.
Az SSH és a kulcsok áttekintése
Az SSH egy titkosított kapcsolati protokoll, amely biztonságos bejelentkezéseket biztosít a nem biztonságos kapcsolatokon keresztül. Bár az SSH titkosított kapcsolatot biztosít, az SSH-kapcsolatokkal rendelkező jelszavak használata továbbra is sebezhetővé teszi a virtuális gépet a találgatásos támadásokkal szemben. Azt javasoljuk, hogy SSH-kapcsolaton keresztül csatlakozzon egy virtuális géphez egy nyilvános és privát kulcspár, más néven SSH-kulcsok használatával.
A nyilvános kulcs a virtuális gépen lesz elhelyezve.
A titkos kulcs a helyi rendszeren marad. Védje a titkos kulcsot. Ne ossza meg senkivel.
Ha SSH-ügyféllel csatlakozik a virtuális géphez (amely rendelkezik nyilvános kulccsal), a távoli virtuális gép teszteli az ügyfelet, hogy biztosan a megfelelő titkos kulccsal rendelkezik-e. Ha az ügyfél rendelkezik a titkos kulccsal, hozzáférést kap a virtuális géphez.
A szervezet biztonsági szabályzataitól függően egyetlen nyilvános-privát kulcspárt használhat újra több Azure-beli virtuális gép és szolgáltatás eléréséhez. Nincs szükség külön kulcspárra minden elérni kívánt virtuális géphez vagy szolgáltatáshoz.
A nyilvános kulcs bárkivel megosztható, de csak Önnek (vagy a helyi biztonsági infrastruktúrának) kell hozzáférnie a titkos kulcshoz.
Támogatott SSH-kulcsformátumok
Az Azure jelenleg támogatja a 2. SSH protokoll (SSH-2) nyilvános-privát RSA kulcspárokat, amelyek minimális hossza 2048 bit. Más kulcsformátumok, például a ED25519 és az ECDSA nem támogatottak.
Az SSH-kulcsok használata és a használat előnyei
Amikor egy Azure-beli virtuális gépet a nyilvános kulcs megadásával hoz létre, az Azure a nyilvános kulcsot (formátumában .pub
) a ~/.ssh/authorized_keys
virtuális gép mappájába másolja. Az SSH-kulcsok ~/.ssh/authorized_keys
biztosítják, hogy a csatlakozó ügyfelek az SSH-kapcsolat során a megfelelő titkos kulcsot tartalmazzák. A hitelesítéshez SSH-kulcsokat használó Azure Linux rendszerű virtuális gépeken az Azure letiltja az SSH-kiszolgáló jelszó-hitelesítési rendszerét, és csak az SSH-kulcsok hitelesítését teszi lehetővé. Ha SSH-kulcsokkal hoz létre Egy Azure Linux rendszerű virtuális gépet, azzal biztonságossá teheti a virtuális gép üzembe helyezését, és mentheti a fájlban lévő sshd_config
jelszavak letiltásának tipikus, üzembe helyezés utáni konfigurációs lépését.
Ha nem szeretne SSH-kulcsokat használni, beállíthatja a Linux rendszerű virtuális gépet a jelszóhitelesítés használatára. Ha a virtuális gép nem érhető el az interneten, a jelszavak használata elegendő lehet. Azonban továbbra is kezelnie kell az egyes Linux virtuális gépekhez tartozó jelszavakat, és kifogástalan jelszószabályzatokat és eljárásokat kell fenntartania, például a jelszó minimális hosszát és a rendszeres rendszerfrissítéseket.
Kulcsok létrehozása ssh-keygen használatával
A kulcsok létrehozásához az előnyben részesített parancs az ssh-keygen
OpenSSH-segédprogramokkal elérhető az Azure Cloud Shellben, egy macOS vagy Linux rendszerű gazdagépen, valamint a Windowsban (10 &11). ssh-keygen
kérdések sorozatát kérdezi fel, majd egy titkos kulcsot és egy megfelelő nyilvános kulcsot ír.
Az SSH-kulcsokat alapértelmezés szerint a ~/.ssh
könyvtár tárolja. Ha Ön nem rendelkezik ~/.ssh
könyvtárral, akkor az ssh-keygen
parancs létrehozza azt a megfelelő engedélyekkel. Az SSH-kulcsok erőforrásként jönnek létre, és az Azure-ban lesznek tárolva későbbi használatra.
Megjegyzés:
Az Azure CLI-vel is létrehozhat kulcsokat az az sshkey create paranccsal, az SSH-kulcsok létrehozása és tárolása című cikkben leírtak szerint.
Egyszerű példa
Az alábbi ssh-keygen
parancs alapértelmezés szerint 4096 bites SSH RSA nyilvános és titkos kulcsfájlokat hoz létre a ~/.ssh
címtárban. Ha egy meglévő SSH-kulcspár található az aktuális helyen, a rendszer felülírja ezeket a fájlokat.
ssh-keygen -m PEM -t rsa -b 4096
Részletes példa
Az alábbi példa további parancsbeállításokat mutat be egy SSH RSA-kulcspár létrehozásához. Ha az aktuális helyen SSH-kulcspár található, a rendszer felülírja ezeket a fájlokat.
ssh-keygen \
-m PEM \
-t rsa \
-b 4096 \
-C "azureuser@myserver" \
-f ~/.ssh/mykeys/myprivatekey \
-N mypassphrase
A parancs ismertetése
ssh-keygen
= a kulcsok létrehozásához használt program,
-m PEM
= a kulcs formázása PEM-ként
-t rsa
= a létrehozandó kulcs típusa, ebben az esetben RSA formátumban
-b 4096
= a kulcs bitjeinek száma, ebben az esetben 4096
-C "azureuser@myserver"
= a nyilvános kulcsfájl végéhez fűzött megjegyzés az egyszerű azonosítás érdekében. Általában egy e-mail-címet használunk megjegyzésként, de azt használjuk, ami a legjobban működik az infrastruktúrához.
-f ~/.ssh/mykeys/myprivatekey
= a titkos kulcsfájl fájlneve, ha úgy dönt, hogy nem használja az alapértelmezett nevet. A hozzáfűzött .pub
megfelelő nyilvános kulcsfájl ugyanabban a könyvtárban jön létre. A könyvtárnak léteznie kell.
-N mypassphrase
= a titkos kulcsfájl eléréséhez használt további jelszó.
Ssh-keygen – példa
ssh-keygen -t rsa -m PEM -b 4096 -C "azureuser@myserver"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/azureuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/azureuser/.ssh/id_rsa.
Your public key has been saved in /home/azureuser/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vFfHHrpSGQBd/oNdvNiX0sG9Vh+wROlZBktNZw9AUjA azureuser@myserver
The key's randomart image is:
+---[RSA 4096]----+
| .oE=*B*+ |
| o+o.*++|
| .oo++*|
| . .B+.O|
| S o=BO.|
| . .o++o |
| . ... . |
| .. . |
| .. |
+----[SHA256]-----+
Mentett kulcsfájlok
Enter file in which to save the key (/home/azureuser/.ssh/id_rsa): ~/.ssh/id_rsa
A cikkben használt kulcspár neve. Az alapértelmezett érték a kulcspár elnevezése id_rsa
; egyes eszközök a id_rsa
titkos kulcs fájljának nevét várhatják, ezért jó ötlet, ha van ilyen. A ~/.ssh/
könyvtár az SSH-kulcspárok és az SSH konfigurációs fájl alapértelmezett helye. Ha nincs megadva a teljes elérési útvonal, az ssh-keygen
az aktuális munkakönyvtárban hozza létre a kulcsokat, és nem az alapértelmezett ~/.ssh
könyvtárban.
~/.ssh
A címtár listája
A címtárban lévő ~/.ssh
meglévő fájlok megtekintéséhez futtassa a következő parancsot. Ha nem található fájl a könyvtárban, vagy maga a könyvtár hiányzik, győződjön meg arról, hogy az összes korábbi parancs sikeresen lefutott. Bizonyos Linux-disztribúciókban a címtárban lévő fájlok módosításához gyökérszintű hozzáférésre lehet szükség.
ls -al ~/.ssh
-rw------- 1 azureuser staff 1675 Aug 25 18:04 id_rsa
-rw-r--r-- 1 azureuser staff 410 Aug 25 18:04 id_rsa.pub
Kulcsjelszó
Enter passphrase (empty for no passphrase):
Erősen ajánlott jelszót hozzáadni a titkos kulcshoz. A kulcsfájl védelmére szolgáló jelszó nélkül a fájllal rendelkező bárki bejelentkezhet bármely olyan kiszolgálóra, amely rendelkezik a megfelelő nyilvános kulccsal. A jelszó hozzáadása nagyobb védelmet nyújt abban az esetben, ha valaki hozzáfér az Ön titkos kulcsfájljához, így időt kap a kulcsok módosítására.
Kulcsok automatikus létrehozása az üzembe helyezés során
Ha az Azure CLI-vel hozza létre a virtuális gépet, az az vm create parancs futtatásával --generate-ssh-keys
igény szerint létrehozhat nyilvános és privát SSH-kulcsfájlokat is. A kulcsok a ~/.ssh könyvtárban vannak tárolva. Vegye figyelembe, hogy ez a parancsbeállítás nem írja felül a kulcsokat, ha már léteznek ezen a helyen, például néhány előre konfigurált Compute Gallery-lemezkép esetében.
Nyilvános SSH-kulcs megadása virtuális gép üzembe helyezésekor
Ha olyan Linux rendszerű virtuális gépet szeretne létrehozni, amely SSH-kulcsokat használ a hitelesítéshez, adja meg az SSH nyilvános kulcsát a virtuális gép Azure Portal, parancssori felület, Resource Manager-sablonok vagy más módszerek használatával történő létrehozásakor. A portál használatakor magát a nyilvános kulcsot kell megadnia. Ha az Azure CLI használatával hozza létre a virtuális gépet egy meglévő nyilvános kulccsal, adja meg ennek a nyilvános kulcsnak az értékét vagy helyét az az vm create paranccsal a --ssh-key-value
beállítással.
Ha nem ismeri az SSH nyilvános kulcs formátumát, a nyilvános kulcs az alábbiak szerint futva cat
jelenhet meg, és a saját nyilvános kulcs fájlhelyére cserélhető ~/.ssh/id_rsa.pub
:
cat ~/.ssh/id_rsa.pub
A kimenet a következőhöz hasonló (az alábbi példa újrakiterjedt):
ssh-rsa XXXXXXXXXXc2EAAAADAXABAAABAXC5Am7+fGZ+5zXBGgXS6GUvmsXCLGc7tX7/rViXk3+eShZzaXnt75gUmT1I2f75zFn2hlAIDGKWf4g12KWcZxy81TniUOTjUsVlwPymXUXxESL/UfJKfbdstBhTOdy5EG9rYWA0K43SJmwPhH28BpoLfXXXXXG+/ilsXXXXXKgRLiJ2W19MzXHp8z3Lxw7r9wx3HaVlP4XiFv9U4hGcp8RMI1MP1nNesFlOBpG4pV2bJRBTXNXeY4l6F8WZ3C4kuf8XxOo08mXaTpvZ3T1841altmNTZCcPkXuMrBjYSJbA8npoXAXNwiivyoe3X2KMXXXXXdXXXXXXXXXXCXXXXX/ azureuser@myserver
Ha a nyilvános kulcsfájl tartalmát másolja és illessze be az Azure Portalra vagy a Resource Manager-sablonba, győződjön meg arról, hogy nem másol további szóközt, és nem vezet be további sortöréseket. Ha például macOS-t használ, a nyilvános kulcsfájlt (alapértelmezés szerint~/.ssh/id_rsa.pub
) a pbcopy használatával másolhatja a tartalom másolásához (vannak más Linux-programok is, amelyek ugyanezt teszik, példáulxclip
).
Ha többsoros formátumú nyilvános kulcsot szeretne használni, létrehozhat egy RFC4716 formázott kulcsot egy "pem" tárolóban a korábban létrehozott nyilvános kulcsból.
RFC4716 formátumú kulcs meglévő nyilvános SSH-kulcsból történő létrehozása:
ssh-keygen \
-f ~/.ssh/id_rsa.pub \
-e \
-m RFC4716 > ~/.ssh/id_ssh2.pem
SSH a virtuális géphez SSH-ügyféllel
Az Azure-beli virtuális gépen üzembe helyezett nyilvános kulccsal és a helyi rendszeren lévő titkos kulccsal az SSH-t a virtuális gépre a virtuális gép IP-címével vagy DNS-nevével telepítheti. Cserélje le az azureusert és myvm.westus.cloudapp.azure.com a következő parancsban a rendszergazdai felhasználónévre és a teljes tartománynévre (vagy IP-címre):
ssh azureuser@myvm.westus.cloudapp.azure.com
Ha jelszót adott meg a kulcspár létrehozásakor, a bejelentkezési folyamat során a rendszer kéri a jelszót. (A rendszer hozzáadja a kiszolgálót a ~/.ssh/known_hosts
mappájához, és nem kér ismételt csatlakozást, amíg a nyilvános kulcs Azure-beli virtuális gépén nem változik, vagy amíg a kiszolgálónevet nem törlik a ~/.ssh/known_hosts
helyről.)
Ha a virtuális gép a just-in-time hozzáférési szabályzatot használja, a virtuális géphez való csatlakozás előtt hozzáférést kell kérnie. A just-in-time szabályzatról további információt a virtuális gépek hozzáférésének kezelése a just in time szabályzat használatával című témakörben talál.
Az ssh-agent használata a titkos kulcs jelszavának tárolásához
Ha szeretné elkerülni, hogy minden SSH-bejelentkezéshez begépelje a titkos kulcsú fájl jelszavát, a ssh-agent
helyi rendszeren gyorsítótárazhatja a titkoskulcs-fájl jelszavát. Mac használata esetén a macOS-kulcskarika biztonságosan tárolja a titkos kulcs jelszavát a meghíváskor ssh-agent
.
Ellenőrizze és használja ssh-agent
, és ssh-add
tájékoztassa az SSH-rendszert a kulcsfájlokról, hogy ne kelljen interaktív módon használnia a jelszót.
eval "$(ssh-agent -s)"
Ezután adja hozzá a titkos kulcsot az ssh-agent
ügynökhöz az ssh-add
paranccsal.
ssh-add ~/.ssh/id_rsa
A titkos kulcs jelszavának tárolása a következő helyen ssh-agent
történik: .
A kulcs egy meglévő virtuális gépre másolásához használja az ssh-copy-id azonosítót
Ha már létrehozott egy virtuális gépet, hozzáadhat egy új nyilvános SSH-kulcsot a Linux rendszerű virtuális géphez a használatával ssh-copy-id
.
ssh-copy-id -i ~/.ssh/id_rsa.pub azureuser@myserver
SSH konfigurációs fájl létrehozása és konfigurálása
Létrehozhat és konfigurálhat egy SSH-konfigurációs fájlt (~/.ssh/config
) a bejelentkezések felgyorsításához és az SSH-ügyfél viselkedésének optimalizálásához.
Az alábbi példa egy egyszerű konfigurációt mutat be, amellyel gyorsan bejelentkezhet felhasználóként egy adott virtuális gépre az alapértelmezett SSH titkos kulcs használatával.
Hozza létre a fájlt.
touch ~/.ssh/config
A fájl szerkesztése az új SSH-konfiguráció hozzáadásához
vim ~/.ssh/config
Adja hozzá a gazdagép virtuális gépének megfelelő konfigurációs beállításokat. Ebben a példában a virtuális gép neve (gazdagép) myvm, a fiók neve (felhasználó) azureuser, az IP-cím vagy a teljes tartománynév (állomásnév) pedig 192.168.0.255.
# Azure Keys
Host myvm
Hostname 192.168.0.255
User azureuser
# ./Azure Keys
További gazdagépek konfigurációit is hozzáadhatja, amelyek lehetővé teszik, hogy mindegyik saját dedikált kulcspárt használjon. A speciális konfigurációs beállításokat az SSH konfigurációs fájljában talál.
Most, hogy már rendelkezik egy SSH-kulcspár és egy konfigurált SSH-konfigurációs fájllal, gyorsan és biztonságosan elérheti a Linux rendszerű virtuális gépet. A következő parancs futtatásakor az SSH megkeresi és betölti a Host myvm
blokk beállításait az SSH konfigurációs fájljában.
ssh myvm
Amikor első alkalommal jelentkezik be egy kiszolgálóra egy SSH-kulccsal, a parancssor kéri az adott kulcsfájlhoz tartozó jelszó megadását.
További lépések
Ezután létre kell hoznia az Azure Linux virtuális gépeket az új nyilvános SSH-kulcs használatával. Az SSH nyilvános kulccsal létrehozott Azure-beli virtuális gépek, mint a bejelentkezés, jobban védettek, mint az alapértelmezett bejelentkezési módszerrel, jelszóval létrehozott virtuális gépek.