Podrobný postup: Vytvoření a správa klíčů SSH pro ověřování na virtuálním počítači s Linuxem v Azure

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Pomocí páru klíčů SSH (Secure Shell) můžete vytvořit virtuální počítač s Linuxem, který k ověřování používá klíče SSH. V tomto článku se dozvíte, jak vytvořit a použít pár souborů veřejného a privátního klíče SSH pro připojení klientů SSH.

Pokud chcete rychlé příkazy místo podrobnějšího vysvětlení klíčů SSH, přečtěte si téma Vytvoření páru veřejného a privátního klíče SSH pro virtuální počítače s Linuxem v Azure.

Pokud chcete vytvořit klíče SSH a použít je k připojení k virtuálnímu počítači s Linuxem z počítače s Windows , přečtěte si téma Použití klíčů SSH s Windows v Azure. Pomocí webu Azure Portal můžete také vytvářet a spravovat klíče SSH pro vytváření virtuálních počítačů na portálu.

Přehled SSH a klíčů

SSH je šifrovaný protokol připojení, který poskytuje zabezpečené přihlašování přes nezabezpečená připojení. I když SSH poskytuje šifrované připojení, používání hesel s připojeními SSH stále opouští virtuální počítač zranitelný vůči útokům hrubou silou. Doporučujeme připojit se k virtuálnímu počítači přes SSH pomocí páru veřejného privátního klíče, který se označuje také jako klíče SSH.

  • Veřejný klíč se umístí na virtuální počítač.

  • Privátní klíč zůstane ve vašem místním systému. Chraňte tento privátní klíč. Nesdílejte ho.

Když použijete klienta SSH pro připojení k virtuálnímu počítači (který má veřejný klíč), vzdálený virtuální počítač otestuje klienta, aby se ujistil, že má správný privátní klíč. Pokud má klient privátní klíč, má udělený přístup k virtuálnímu počítači.

V závislosti na zásadách zabezpečení vaší organizace můžete znovu použít jeden pár veřejného privátního klíče pro přístup k více virtuálním počítačům a službám Azure. Pro každý virtuální počítač nebo službu, ke které chcete získat přístup, nepotřebujete samostatný pár klíčů.

Váš veřejný klíč můžete sdílet s kýmkoli, ale k vašemu privátnímu klíči byste měli mít přístup jenom vy (nebo vaše místní infrastruktura zabezpečení).

Podporované formáty klíčů SSH

Azure v současné době podporuje následující typy klíčů:

  • Protokol SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) s minimální délkou 2048 bitů
  • ED25519 klíče s pevnou délkou 256 bitů

Jiné klíčové formáty, jako je Například Elliptic-curve Diffie-Hellman (ECDH) a Elliptic Curve Digital Signature Algorithm (ECDSA), se v současné době nepodporují.

Použití a výhody klíčů SSH

Když vytvoříte virtuální počítač Azure zadáním veřejného klíče, Azure zkopíruje veřejný klíč (ve .pub formátu) do ~/.ssh/authorized_keys složky na virtuálním počítači. Klíče ~/.ssh/authorized_keys SSH zajišťují, že připojení klientů během připojení SSH prezentuje odpovídající privátní klíč. Na virtuálním počítači Azure s Linuxem, který k ověřování používá klíče SSH, Azure zakáže ověřovací systém serveru SSH a umožňuje ověřování pomocí klíče SSH. Vytvořením virtuálního počítače Azure s Linuxem s klíči SSH můžete pomoct zabezpečit nasazení virtuálního počítače a uložit si typický krok konfigurace po nasazení pro zakázání hesel v sshd_config souboru.

Pokud nechcete používat klíče SSH, můžete virtuální počítač s Linuxem nastavit tak, aby používal ověřování heslem. Pokud váš virtuální počítač není přístupný z internetu, může být použití hesel dostačující. Přesto ale potřebujete spravovat hesla pro každý virtuální počítač s Linuxem a udržovat zdravé zásady hesel a postupy, jako je minimální délka hesla a pravidelné aktualizace systému.

Generování klíčů pomocí SSH-keygen

Pro vytvoření klíčů je ssh-keygenupřednostňovaným příkazem , který je k dispozici s nástroji OpenSSH v Azure Cloud Shellu, hostiteli macOS nebo Linuxu a Windows (10 a 11). ssh-keygen položí řadu otázek a pak zapíše privátní klíč a odpovídající veřejný klíč.

Klíče SSH jsou ve výchozím nastavení v adresáři ~/.ssh. Pokud adresář ~/.ssh nemáte, vytvoří ho za vás příkaz ssh-keygen se správnými oprávněními. Klíč SSH se vytvoří jako prostředek a uloží se v Azure pro pozdější použití.

Poznámka:

Klíče můžete také vytvořit pomocí Azure CLI pomocí příkazu az sshkey create , jak je popsáno v tématu Generování a ukládání klíčů SSH.

Základní příklad

Následující ssh-keygen příkaz ve výchozím nastavení vygeneruje 4096bitové soubory veřejného a privátního ~/.ssh klíče SSH RSA v adresáři. Pokud se v aktuálním umístění najde existující pár klíčů SSH, přepíšou se tyto soubory.

ssh-keygen -m PEM -t rsa -b 4096

Následující ssh-keygen příkaz ve výchozím nastavení vygeneruje 256bitové ED25519 soubory veřejného a privátního ~/.ssh klíče v adresáři. Pokud se v aktuálním umístění najde existující pár klíčů SSH, přepíšou se tyto soubory.

ssh-keygen -m PEM -t ed25519

Podrobný příklad

Následující příklad ukazuje další možnosti příkazu pro vytvoření páru klíčů SSH RSA. Pokud v aktuálním umístění existuje pár klíčů SSH, přepíšou se tyto soubory.

ssh-keygen \
    -m PEM \
    -t rsa \
    -b 4096 \
    -C "azureuser@myserver" \
    -f ~/.ssh/mykeys/myrsaprivatekey \
    -N mypassphrase

Následující příklad ukazuje další možnosti příkazu pro vytvoření páru klíčů SSH ED25519. Pokud v aktuálním umístění existuje pár klíčů SSH, přepíšou se tyto soubory.

ssh-keygen \
    -m PEM \
    -t ed25519 \
    -C "azureuser@myserver" \
    -f ~/.ssh/mykeys/myedprivatekey \
    -N mypassphrase

Vysvětlení příkazu

ssh-keygen= program použitý k vytvoření klíčů

-m PEM = naformátovat klíč jako PEM

-t rsa = typ klíče, který se má vytvořit, v tomto případě ve formátu RSA

-b 4096 = počet bitů v klíči, v tomto případě 4096

-C "azureuser@myserver"= komentář připojený na konec souboru veřejného klíče pro snadnější identifikaci. Obvykle se jako komentář používá e-mailová adresa, ale použijte cokoli, co je pro vaši infrastrukturu nejvhodnější.

-f ~/.ssh/mykeys/myprivatekey = název souboru privátního klíče, pokud se rozhodnete použít výchozí název. Odpovídající soubor veřejného klíče připojený pomocí .pub se vygeneruje ve stejném adresáři. Adresář musí existovat.

-N mypassphrase = další heslo použité pro přístup k souboru privátního klíče.

Příklad ssh-keygenu (RSA)

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]-----+

Příklad ssh-keygen (ED25519)

ssh-keygen -t ed25519 -m PEM -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_ed25519.
Your public key has been saved in /home/azureuser/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:vFfHHrpSGQBd/oNdvNiX0sG9Vh+wROlZBktNZw9AUjA azureuser@myserver
The key's randomart image is:
+---[ED25519 256]----+
|                 |
|..  .            |
|o+.o       .     |
|*=o o   o + +    |
|*+o+   oSB + o   |
|**++o.+oo = .    |
|=+*..*.o E       |
|..  o o..        |
|     .o.         |
+----[SHA256]-----+

Uložené soubory klíčů

Enter file in which to save the key (/home/azureuser/.ssh/id_rsa): ~/.ssh/id_rsa

nebo

Enter file in which to save the key (/home/azureuser/.ssh/id_ed25519): ~/.ssh/id_ed25519

Výchozí názvy párů klíčů pro RSA a ED25519 jsou id_rsa a id_ed25519 v uvedeném pořadí. Některé nástroje můžou očekávat název souboru nebo id_ed25519 privátního klíče, takže je vhodné ho mítid_rsa. Výchozím umístěním pro páry klíčů SSH a konfigurační soubor SSH je adresář ~/.ssh/. Pokud nezadáte úplnou cestu, ssh-keygen vytvoří klíče v aktuálním pracovním adresáři, nikoli ve výchozím adresáři ~/.ssh.

~/.ssh Seznam adresáře

Pokud chcete zobrazit existující soubory v ~/.ssh adresáři, spusťte následující příkaz. Pokud v adresáři nebyly nalezeny žádné soubory nebo samotný adresář chybí, ujistěte se, že byly úspěšně spuštěny všechny předchozí příkazy. K úpravě souborů v tomto adresáři v určitých distribucích Linuxu můžete vyžadovat kořenový přístup.

Pár klíčů RSA:

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

pár klíčů ED25519:

ls -al ~/.ssh
-rw------- 1 azureuser staff  1675 Aug 25 18:04 id_ed25519
-rw-r--r-- 1 azureuser staff   410 Aug 25 18:04 id_ed25519.pub

Klíčové heslo

Enter passphrase (empty for no passphrase):

Důrazně doporučujeme přidat heslo k vašemu privátnímu klíči. Bez přístupového hesla k ochraně souboru klíče ho může kdokoli s tímto souborem použít k přihlášení k libovolnému serveru, který má odpovídající veřejný klíč. Přidání přístupového hesla nabízí větší ochranu v případě, že by někdo mohl získat přístup k vašemu souboru privátního klíče a dát vám čas na změnu klíčů.

Automatické generování klíčů během nasazování

Pokud k vytvoření virtuálního počítače použijete Azure CLI , můžete volitelně vygenerovat soubory veřejného i privátního klíče SSH spuštěním příkazu az vm create s --generate-ssh-keys možností. Tento příkaz by ve výchozím nastavení byl nastaven na typ klíče RSA, aby se vygenerovaly klíče ED25519 můžete předat další příkaz příznaku --ssh-key-type . Klíče jsou uložené v adresáři ~/.ssh. Všimněte si, že tato možnost příkazu nepřepíše klíče, pokud už v tomto umístění existují, například u některých předkonfigurovaných imagí výpočetní galerie.

Základní příklad

Vytvořte jednoduchý virtuální počítač s Ubuntu Linuxem spolu s párem klíčů SSH Ed25519.

az vm create -n MyVm -g MyResourceGroup --image Ubuntu2204 --generate-ssh-keys --ssh-key-type ed25519

Poskytnutí veřejného klíče SSH při nasazování virtuálního počítače

Pokud chcete vytvořit virtuální počítač s Linuxem, který k ověřování používá klíče SSH, při vytváření virtuálního počítače zadejte veřejný klíč SSH pomocí webu Azure Portal, rozhraní příkazového řádku, šablon Resource Manageru nebo jiných metod. Při použití portálu zadáte samotný veřejný klíč. Pokud k vytvoření virtuálního počítače s existujícím veřejným klíčem použijete Azure CLI , zadejte hodnotu nebo umístění tohoto veřejného klíče spuštěním příkazu az vm create s --ssh-key-value možností.

Pokud neznáte formát veřejného klíče SSH, můžete veřejný klíč zobrazit spuštěním cat následujícího příkazu a nahradit ~/.ssh/id_rsa.pub umístěním vlastního souboru veřejného klíče:

Pár klíčů RSA

cat ~/.ssh/id_rsa.pub

Výstup je podobný následujícímu (níže uvedený příklad byl upraven):

ssh-rsa XXXXXXXXXXc2EAAAADAXABAAABAXC5Am7+fGZ+5zXBGgXS6GUvmsXCLGc7tX7/rViXk3+eShZzaXnt75gUmT1I2f75zFn2hlAIDGKWf4g12KWcZxy81TniUOTjUsVlwPymXUXxESL/UfJKfbdstBhTOdy5EG9rYWA0K43SJmwPhH28BpoLfXXXXXG+/ilsXXXXXKgRLiJ2W19MzXHp8z3Lxw7r9wx3HaVlP4XiFv9U4hGcp8RMI1MP1nNesFlOBpG4pV2bJRBTXNXeY4l6F8WZ3C4kuf8XxOo08mXaTpvZ3T1841altmNTZCcPkXuMrBjYSJbA8npoXAXNwiivyoe3X2KMXXXXXdXXXXXXXXXXCXXXXX/ azureuser@myserver

Pokud zkopírujete a vložíte obsah souboru veřejného klíče do webu Azure Portal nebo do šablony Resource Manageru, nezapomeňte zkopírovat žádné další prázdné znaky nebo zavést další konce řádků. Pokud například používáte macOS, můžete soubor veřejného klíče (ve výchozím nastavení ~/.ssh/id_rsa.pub) převést na pbcopy ke zkopírování obsahu (existují i další linuxové programy, které dělají totéž, například xclip).

Pokud chcete použít veřejný klíč, který je ve víceřádkovém formátu, můžete vygenerovat RFC4716 formátovaný klíč v kontejneru pem z veřejného klíče, který jste vytvořili dříve.

Vytvoření RFC4716 naformátovaného klíče z existujícího veřejného klíče SSH:

ssh-keygen \
-f ~/.ssh/id_rsa.pub \
-e \
-m RFC4716 > ~/.ssh/id_ssh2.pem

pár klíčů ED25519

cat ~/.ssh/id_ed25519.pub

Výstup je podobný následujícímu (níže uvedený příklad byl upraven):

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIP6I5JuhGq3RidMNpxrplIQwEfc4Rh7UyV8JYYH2U2xA azureuser@myserver

Pokud zkopírujete a vložíte obsah souboru veřejného klíče do webu Azure Portal nebo do šablony Resource Manageru, nezapomeňte zkopírovat žádné další prázdné znaky nebo zavést další konce řádků. Pokud například používáte macOS, můžete soubor veřejného klíče (ve výchozím nastavení ~/.ssh/id_ed25519.pub) převést na pbcopy ke zkopírování obsahu (existují i další linuxové programy, které dělají totéž, například xclip).

Pokud chcete použít veřejný klíč, který je ve víceřádkovém formátu, můžete vygenerovat RFC4716 formátovaný klíč v kontejneru pem z veřejného klíče, který jste vytvořili dříve.

Postup vytvoření klíče s formátem PEM z existujícího veřejného klíče SSH:

ssh-keygen \
-f ~/.ssh/id_ed25519.pub \
-e \
-m RFC4716 > ~/.ssh/id_edssh.pem

Připojení SSH k virtuálnímu počítači pomocí klienta SSH

S veřejným klíčem nasazeným na virtuálním počítači Azure a privátním klíčem v místním systému se připojte přes SSH k virtuálnímu počítači pomocí IP adresy nebo názvu DNS vašeho virtuálního počítače. Nahraďte azureuser a myvm.westus.cloudapp.azure.com v následujícím příkazu uživatelským jménem správce a plně kvalifikovaným názvem domény (nebo IP adresou):

ssh azureuser@myvm.westus.cloudapp.azure.com

Pokud jste při vytváření páru klíčů zadali přístupové heslo, po zobrazení výzvy během procesu přihlášení zadejte heslo. (Server se přidá do vaší složky ~/.ssh/known_hosts a nové připojení se nebude vyžadovat, dokud se nezmění veřejný klíč na virtuálním počítači Azure nebo se neodebere název serveru ze složky ~/.ssh/known_hosts.)

Pokud virtuální počítač používá zásady přístupu za běhu, musíte požádat o přístup, abyste se mohli připojit k virtuálnímu počítači. Další informace ozásadách

Použití ssh-agenta k uložení hesla privátního klíče

Abyste se vyhnuli zadávání přístupového hesla k souboru privátního klíče při každém přihlášení SSH, můžete použít ssh-agent k ukládání přístupového hesla k souboru privátního klíče do mezipaměti v místním systému. Pokud používáte Mac, klíčka macOS bezpečně ukládá heslo privátního klíče při vyvolání ssh-agent.

Ověřte a používejte ssh-agent a ssh-add informovat systém SSH o souborech klíčů, abyste nemuseli heslo používat interaktivně.

eval "$(ssh-agent -s)"

Potom přidejte privátní klíč do ssh-agent pomocí příkazu ssh-add.

ssh-add ~/.ssh/id_rsa

nebo

ssh-add ~/.ssh/id_ed25519

Heslo privátního klíče je nyní uloženo v ssh-agentsouboru .

Použití ssh-copy-id ke zkopírování klíče do existujícího virtuálního počítače

Pokud jste už vytvořili virtuální počítač, můžete k virtuálnímu počítači s Linuxem přidat nový veřejný klíč SSH pomocí ssh-copy-id.

ssh-copy-id -i ~/.ssh/id_rsa.pub azureuser@myserver

Vytvoření a nakonfigurování konfiguračního souboru SSH

Můžete vytvořit a nakonfigurovat konfigurační soubor SSH (~/.ssh/config), který urychlí přihlášení a optimalizuje chování klienta SSH.

Následující příklad ukazuje jednoduchou konfiguraci, kterou můžete použít k rychlému přihlášení jako uživatel k určitému virtuálnímu počítači pomocí výchozího privátního klíče SSH.

Vytvořte soubor.

touch ~/.ssh/config

Úprava souboru pro přidání nové konfigurace SSH

vim ~/.ssh/config

Přidejte nastavení konfigurace odpovídající vašemu hostitelskému virtuálnímu počítači. V tomto příkladu je název virtuálního počítače (hostitel) myvm, název účtu (Uživatel) je azureuser a IP adresa nebo plně kvalifikovaný název domény (název hostitele) je 192.168.0.255.

# Azure Keys
Host myvm
  Hostname 192.168.0.255
  User azureuser
# ./Azure Keys

Můžete přidat konfigurace pro další hostitele, aby každý mohl používat vlastní vyhrazený pár klíčů. Další pokročilé možnosti konfigurace najdete v konfiguračním souboru SSH.

Teď, když máte pár klíčů SSH a nakonfigurovaný konfigurační soubor SSH, můžete vzdáleně přistupovat k virtuálnímu počítači s Linuxem rychle a bezpečně. Když spustíte následující příkaz, SSH vyhledá a načte všechna nastavení z Host myvm bloku v konfiguračním souboru SSH.

ssh myvm

Při prvním přihlášení k serveru pomocí klíče SSH vás příkaz vyzve k zadání přístupového hesla pro tento soubor klíče.

Další kroky

Dalším krokem je vytvoření virtuálního počítače Azure s Linuxem pomocí nového veřejného klíče SSH. Virtuální počítače Azure vytvořené pomocí veřejného klíče SSH jako přihlašování jsou lépe zabezpečené než virtuální počítače vytvořené pomocí výchozí metody přihlašování a hesel.