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-keygenOpenSSH-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-agenttö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.