Jak używać kluczy SSH z systemem Windows na platformie Azure

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Ten artykuł dotyczy użytkowników systemu Windows, którzy chcą tworzyć i używać kluczy secure shell (SSH) do łączenia się z maszynami wirtualnymi z systemem Linux na platformie Azure. Klucze SSH można również wygenerować i przechowywać w Azure Portal do użycia podczas tworzenia maszyn wirtualnych w portalu.

Aby użyć kluczy SSH z klienta systemu Linux lub macOS, zobacz szybkie kroki. Aby uzyskać bardziej szczegółowe omówienie protokołu SSH, zobacz Szczegółowe kroki: Tworzenie kluczy SSH na potrzeby uwierzytelniania na maszynie wirtualnej z systemem Linux na platformie Azure i zarządzanie nimi.

Omówienie protokołu SSH i kluczy

SSH to zaszyfrowany protokół połączenia, który umożliwia bezpieczne logowanie za pośrednictwem niezabezpieczonych połączeń. SSH to domyślny protokół połączenia dla maszyn wirtualnych z systemem Linux hostowanych na platformie Azure. Chociaż sam protokół SSH zapewnia zaszyfrowane połączenie, użycie haseł za pomocą protokołu SSH nadal pozostawia maszynę wirtualną podatną na ataki siłowe. Zalecamy nawiązanie połączenia z maszyną wirtualną za pośrednictwem protokołu SSH przy użyciu pary kluczy prywatnych, znanej również jako klucze SSH.

Para kluczy publicznych-prywatnych jest jak blokada na drzwiach. Blokada jest uwidoczniona publicznie, każdy, kto ma odpowiedni klucz, może otworzyć drzwi. Klucz jest prywatny i udzielany tylko osobom, którym ufasz, ponieważ może służyć do odblokowania drzwi.

  • Klucz publiczny jest umieszczany na maszynie wirtualnej z systemem Linux podczas tworzenia maszyny wirtualnej.

  • Klucz prywatny pozostaje w systemie lokalnym. Klucz prywatny należy chronić. Nie udostępniaj go.

Po nawiązaniu połączenia z maszyną wirtualną z systemem Linux maszyna wirtualna testuje klienta SSH, aby upewnić się, że ma on prawidłowy klucz prywatny. Jeśli klient ma klucz prywatny, udzielono mu dostępu do maszyny wirtualnej.

W zależności od zasad zabezpieczeń organizacji można ponownie użyć jednej pary kluczy, aby uzyskać dostęp do wielu maszyn wirtualnych i usług platformy Azure. Nie potrzebujesz oddzielnej pary kluczy dla każdej maszyny wirtualnej.

Klucz publiczny może być udostępniany każdemu, ale tylko Ty (lub lokalna infrastruktura zabezpieczeń) powinien mieć dostęp do klucza prywatnego.

Obsługiwane formaty kluczy SSH

Platforma Azure obsługuje obecnie pary kluczy publicznych-prywatnych RSA protokołu SSH 2 (SSH-2) o minimalnej długości 2048 bitów. Inne formaty kluczy, takie jak ED25519 i ECDSA, nie są obsługiwane.

Klienci SSH

Najnowsze wersje Windows 10 obejmują polecenia klienta OpenSSH do tworzenia i używania kluczy SSH oraz nawiązywania połączeń SSH z programu PowerShell lub wiersza polecenia.

Możesz również użyć powłoki Bash w usłudze Azure Cloud Shell, aby nawiązać połączenie z maszyną wirtualną. Można użyć Cloud Shell w przeglądarce internetowej z poziomu Azure Portal lub jako terminalu w Visual Studio Code przy użyciu rozszerzenia konta platformy Azure.

Możesz również zainstalować Podsystem Windows dla systemu Linux, aby nawiązać połączenie z maszyną wirtualną za pośrednictwem protokołu SSH i użyć innych natywnych narzędzi systemu Linux w powłoce powłoki Bash.

Tworzenie pary kluczy SSH

Najprostszym sposobem tworzenia kluczy SSH i zarządzania nimi jest użycie portalu do tworzenia i przechowywania ich do ponownego użycia.

Pary kluczy można również utworzyć za pomocą interfejsu wiersza polecenia platformy Azure za pomocą polecenia az sshkey create , zgodnie z opisem w temacie Generowanie i przechowywanie kluczy SSH.

Aby utworzyć parę kluczy SSH na komputerze lokalnym przy użyciu ssh-keygen polecenia programu PowerShell lub wiersza polecenia, wpisz następujące polecenie:

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

Wprowadź nazwę pliku lub użyj wartości domyślnej wyświetlanej w nawiasie (na przykład C:\Users\username/.ssh/id_rsa). Wprowadź hasło dla pliku lub pozostaw hasło puste, jeśli nie chcesz używać hasła.

Tworzenie maszyny wirtualnej przy użyciu klucza

Aby utworzyć maszynę wirtualną z systemem Linux, która używa kluczy SSH do uwierzytelniania, podaj klucz publiczny SSH podczas tworzenia maszyny wirtualnej.

Przy użyciu interfejsu wiersza polecenia platformy Azure należy określić ścieżkę i nazwę pliku klucza publicznego przy użyciu parametru az vm create i parametru --ssh-key-value .

az vm create \
   --resource-group myResourceGroup \
   --name myVM \
   --image Ubuntu2204\
   --admin-username azureuser \
   --ssh-key-value ~/.ssh/id_rsa.pub

W programie PowerShell użyj New-AzVM i dodaj klucz SSH do konfiguracji maszyny wirtualnej przy użyciu polecenia ". Aby zapoznać się z przykładem, zobacz Szybki start: tworzenie maszyny wirtualnej z systemem Linux na platformie Azure przy użyciu programu PowerShell.

Jeśli wykonujesz wiele wdrożeń przy użyciu portalu, możesz przekazać klucz publiczny na platformę Azure, gdzie można go łatwo wybrać podczas tworzenia maszyny wirtualnej z poziomu portalu. Aby uzyskać więcej informacji, zobacz Przekazywanie klucza SSH.

Łączenie z maszyną wirtualną

Przy użyciu klucza publicznego wdrożonego na maszynie wirtualnej platformy Azure i klucza prywatnego w systemie lokalnym protokół SSH na maszynie wirtualnej przy użyciu adresu IP lub nazwy DNS maszyny wirtualnej. Zastąp ciąg azureuser i 10.111.12.123 w następującym poleceniu nazwą użytkownika administratora, adresem IP (lub w pełni kwalifikowaną nazwą domeny) oraz ścieżką do klucza prywatnego:

ssh -i ~/.ssh/id_rsa azureuser@10.111.12.123

Jeśli nigdy nie nawiązano połączenia z tą maszyną wirtualną, zanim zostanie wyświetlony monit o zweryfikowanie odcisku palca hostów. Kuszące jest jednak zaakceptowanie przedstawionego odcisku palca, co naraża cię na możliwą osobę w środku ataku. Zawsze należy zweryfikować odcisk palca hostów. Należy to zrobić tylko przy pierwszym połączeniu z klientem. Aby uzyskać odcisk palca hosta za pośrednictwem portalu, użyj polecenia Uruchom za pomocą następującego polecenia: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'.

Zrzut ekranu przedstawiający użycie polecenia Uruchom w celu zweryfikowania odcisku palca hosta.

Aby uruchomić polecenie przy użyciu interfejsu wiersza polecenia, użyj az vm run-command invoke polecenia .

Jeśli podczas tworzenia pary kluczy skonfigurowano hasło, po wyświetleniu monitu wprowadź hasło.

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 maszyny wirtualnej przy użyciu zasad just in time.

Następne kroki