Szybkie kroki: tworzenie i używanie pary kluczy publicznych-prywatnych SSH dla maszyn wirtualnych z systemem Linux na platformie Azure
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️
Za pomocą pary kluczy secure shell (SSH) można tworzyć maszyny wirtualne na platformie Azure, które używają kluczy SSH do uwierzytelniania. W tym artykule przedstawiono sposób szybkiego generowania i używania pary plików kluczy publicznych-prywatnych SSH dla maszyn wirtualnych z systemem Linux. Te kroki można wykonać za pomocą usługi Azure Cloud Shell, systemu macOS lub hosta z systemem Linux.
Aby uzyskać pomoc dotyczącą rozwiązywania problemów z protokołem SSH, zobacz Rozwiązywanie problemów z połączeniami SSH z maszyną wirtualną z systemem Linux platformy Azure, która kończy się niepowodzeniem, błędami lub jest odrzucana.
Uwaga
Maszyny wirtualne utworzone przy użyciu kluczy SSH są domyślnie skonfigurowane z wyłączonymi hasłami, co znacznie zwiększa trudności z atakami siłowymi.
Aby uzyskać więcej informacji i przykładów, zobacz Szczegółowe kroki tworzenia par kluczy SSH.
Aby uzyskać dodatkowe sposoby generowania i używania kluczy SSH na komputerze z systemem Windows, zobacz How to use SSH keys with Windows on Azure (Jak używać kluczy SSH w systemie Windows na platformie Azure).
Obsługiwane formaty kluczy SSH
Platforma Azure obecnie obsługuje następujące typy kluczy:
- Protokół SSH 2 (SSH-2) RSA (Rivest, Shamir, Adleman) o minimalnej długości 2048 bitów
- ED25519 Klucze o stałej długości 256 bitów
Inne kluczowe formaty, takie jak Elliptic-curve Diffie-Hellman (ECDH) i Elliptic Curve Digital Signature Algorithm (ECDSA) nie są obecnie obsługiwane.
Tworzenie pary kluczy SSH
Użyj polecenia , ssh-keygen
aby wygenerować pliki kluczy publicznych i prywatnych SSH. Domyślnie te pliki są tworzone w katalogu ~/.ssh. Możesz określić inną lokalizację i opcjonalne hasło (hasło), aby uzyskać dostęp do pliku klucza prywatnego. Jeśli para kluczy SSH o tej samej nazwie istnieje w danej lokalizacji, te pliki są zastępowane.
Następujące polecenie tworzy parę kluczy SSH przy użyciu szyfrowania RSA i długości bitu 4096:
ssh-keygen -m PEM -t rsa -b 4096 -f ~/.ssh/id_rsa.pem
Następujące polecenie tworzy parę kluczy SSH przy użyciu szyfrowania ED25519 o stałej długości 256 bitów:
ssh-keygen -m PEM -t ed25519 -f ~/.ssh/id_ed25519.pem
Uwaga
Możesz również utworzyć pary kluczy za pomocą interfejsu wiersza polecenia platformy Azure za pomocą polecenia az sshkey create , zgodnie z opisem w temacie Generowanie i przechowywanie kluczy SSH.
Jeśli używasz interfejsu wiersza polecenia platformy Azure do tworzenia maszyny wirtualnej za pomocą polecenia az vm create , możesz opcjonalnie wygenerować pliki kluczy publicznych i prywatnych SSH przy użyciu --generate-ssh-keys
opcji . Pliki kluczy są przechowywane w katalogu ~/.ssh, chyba że określono inaczej z opcją --ssh-dest-key-path
. Jeśli para kluczy SSH już istnieje i --generate-ssh-keys
jest używana opcja, nowa para kluczy nie zostanie wygenerowana, ale zamiast tego zostanie użyta istniejąca para kluczy. W poniższym poleceniu zastąp wartość VMname, RGname i UbuntuLTS własnymi wartościami:
az vm create --name VMname --resource-group RGname --image Ubuntu2204 --generate-ssh-keys
Uwaga
az sshkey create polecenie deafults do szyfrowania RSA i nie może służyć do generowania par kluczy ED25519, jednak można utworzyć parę kluczy ED25519 przy użyciu ssh-keygen zgodnie z powyższym opisem, a następnie użyć tego klucza publicznego do utworzenia maszyny wirtualnej.
Podawanie klucza publicznego SSH podczas wdrażania maszyny wirtualnej
Aby utworzyć maszynę wirtualną z systemem Linux używającą kluczy SSH do uwierzytelniania, określ klucz publiczny SSH podczas tworzenia maszyny wirtualnej przy użyciu witryny Azure Portal, interfejsu wiersza polecenia platformy Azure, szablonów usługi Azure Resource Manager lub innych metod:
- Tworzenie maszyny wirtualnej z systemem Linux przy użyciu witryny Azure Portal
- Tworzenie maszyny wirtualnej z systemem Linux przy użyciu interfejsu wiersza polecenia platformy Azure
- Tworzenie maszyny wirtualnej z systemem Linux przy użyciu szablonu platformy Azure
Jeśli nie znasz formatu klucza publicznego SSH, możesz wyświetlić klucz publiczny za pomocą następującego cat
polecenia, zastępując ~/.ssh/id_rsa.pub
ciąg ścieżką i nazwą pliku własnego klucza publicznego w razie potrzeby:
Para kluczy RSA
cat ~/.ssh/id_rsa.pub
Typowa wartość klucza publicznego RSA wygląda następująco:
ssh-rsa AAAAB3NzaC1yc2EAABADAQABAAACAQC1/KanayNr+Q7ogR5mKnGpKWRBQU7F3Jjhn7utdf7Z2iUFykaYx+MInSnT3XdnBRS8KhC0IP8ptbngIaNOWd6zM8hB6UrcRTlTpwk/SuGMw1Vb40xlEFphBkVEUgBolOoANIEXriAMvlDMZsgvnMFiQ12tD/u14cxy1WNEMAftey/vX3Fgp2vEq4zHXEliY/sFZLJUJzcRUI0MOfHXAuCjg/qyqqbIuTDFyfg8k0JTtyGFEMQhbXKcuP2yGx1uw0ice62LRzr8w0mszftXyMik1PnshRXbmE2xgINYg5xo/ra3mq2imwtOKJpfdtFoMiKhJmSNHBSkK7vFTeYgg0v2cQ2+vL38lcIFX4Oh+QCzvNF/AXoDVlQtVtSqfQxRVG79Zqio5p12gHFktlfV7reCBvVIhyxc2LlYUkrq4DHzkxNY5c9OGSHXSle9YsO3F1J5ip18f6gPq4xFmo6dVoJodZm9N0YMKCkZ4k1qJDESsJBk2ujDPmQQeMjJX3FnDXYYB182ZCGQzXfzlPDC29cWVgDZEXNHuYrOLmJTmYtLZ4WkdUhLLlt5XsdoKWqlWpbegyYtGZgeZNRtOOdN6ybOPJqmYFd2qRtb4sYPniGJDOGhx4VodXAjT09omhQJpE6wlZbRWDvKC55R2d/CSPHJscEiuudb+1SG2uA/oik/WQ== username@domainname
para kluczy ED25519
cat ~/.ssh/id_ed25519.pub
Typowy ED25519 wartość klucza publicznego wygląda następująco:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILRjWGWLeiUQ3U9fNnCsNpXIyACpD/Jbm09OZGsz3DIM username@domainname
Jeśli skopiujesz i wklejesz zawartość pliku klucza publicznego do użycia w witrynie Azure Portal lub szablonie usługi Resource Manager, upewnij się, że nie skopiujesz żadnych końcowych białych znaków. Aby skopiować klucz publiczny w systemie macOS, możesz przekazać plik klucza publicznego do pbcopy
pliku . Podobnie w systemie Linux można przekazać plik klucza publicznego do programów, takich jak xclip
.
Klucz publiczny umieszczany na maszynie wirtualnej z systemem Linux na platformie Azure jest domyślnie przechowywany w ~/.ssh/
katalogu, chyba że podczas tworzenia pary kluczy określono inną lokalizację. Aby użyć interfejsu wiersza polecenia platformy Azure 2.0 do utworzenia maszyny wirtualnej przy użyciu istniejącego klucza publicznego, określ wartość i opcjonalnie lokalizację tego klucza publicznego przy użyciu polecenia az vm create z opcją --ssh-key-values
. W poniższym poleceniu zastąp ciąg myVM, myResourceGroup, UbuntuLTS, azureuser i mysshkey.pub własnymi wartościami:
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image Ubuntu2204 \
--admin-username azureuser \
--ssh-key-values mysshkey.pub
Jeśli chcesz użyć wielu kluczy SSH z maszyną wirtualną, możesz wprowadzić je na liście rozdzielanej przecinkami, w następujący sposób --ssh-key-values sshkey-desktop.pub, sshkey-laptop.pub
.
Łączenie z maszyną wirtualną za pośrednictwem protokołu SSH
W przypadku klucza publicznego wdrożonego na maszynie wirtualnej platformy Azure oraz klucza prywatnego w systemie lokalnym protokół SSH na maszynie wirtualnej przy użyciu adresu IP lub nazwy DNS maszyny wirtualnej. W poniższym poleceniu zastąp ciąg azureuser i myvm.westus.cloudapp.azure.com nazwą użytkownika administratora i w pełni kwalifikowaną nazwą domeny (lub adresem IP):
ssh azureuser@myvm.westus.cloudapp.azure.com
Jeśli łączysz się z tą maszyną wirtualną po raz pierwszy, zostanie wyświetlony monit o zweryfikowanie odcisku palca hosta. Kuszące jest zaakceptowanie przedstawionego odcisku palca, ale to podejście naraża Cię na możliwy atak typu person-in-the-middle. Zawsze należy zweryfikować odcisk palca hosta. Należy to zrobić tylko przy pierwszym nawiązaniu połączenia z poziomu klienta. Aby uzyskać odcisk palca hosta za pośrednictwem portalu, użyj funkcji Uruchom polecenie, aby wykonać polecenie ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
.
Aby uruchomić polecenie przy użyciu interfejsu wiersza polecenia, użyj polecenia az vm run-command invoke
.
Jeśli podczas tworzenia pary kluczy określono hasło, wprowadź to hasło po wyświetleniu monitu podczas procesu logowania. Maszyna wirtualna zostanie dodana do pliku ~/.ssh/known_hosts i nie zostanie wyświetlona prośba o ponowne nawiązanie połączenia, dopóki klucz publiczny na maszynie wirtualnej platformy Azure nie ulegnie zmianie lub nazwa serwera zostanie usunięta z pliku ~/.ssh/known_hosts.
Jeśli maszyna wirtualna korzysta z zasad dostępu just in time, musisz zażądać dostępu przed nawiązaniem połączenia z maszyną wirtualną. Aby uzyskać więcej informacji na temat zasad just in time, zobacz Zarządzanie dostępem do maszyn wirtualnych przy użyciu zasad just in time.
Następne kroki
Aby uzyskać więcej informacji na temat pracy z parami kluczy SSH, zobacz Szczegółowe kroki tworzenia par kluczy SSH i zarządzania nimi.
Jeśli masz problemy z połączeniami SSH z maszynami wirtualnymi platformy Azure, zobacz Rozwiązywanie problemów z połączeniami SSH z maszyną wirtualną z systemem Linux platformy Azure.