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-keygen
upř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-agent
souboru .
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.