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

Dotyczy: ✔️ maszyn wirtualnych z systemem Linux ✔️ elastycznymi zestawami skalowania

Ten artykuł jest Windows użytkowników, którzy chcą tworzyć klucze Secure Shell (SSH) i używać ich do łączenia się z maszynami wirtualnymi z systemem Linux na platformie Azure. Klucze SSH można również generować 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 i zarządzanie nimi w celu uwierzytelniania na maszynie wirtualnej z systemem Linux na platformie Azure.

Omówienie SSH i kluczy

SSH to szyfrowany 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. Mimo że sam SSH zapewnia szyfrowane połączenie, używanie haseł z połączeniem SSH nadal pozostawia maszynę wirtualną na ataki siłowe. Zalecamy nawiązywanie połączenia z maszyną wirtualną za pośrednictwem połączenia SSH przy użyciu pary kluczy publiczny-prywatny, nazywanej również kluczami SSH.

Para kluczy publiczny-prywatny przypomina blokadę w drzwiach wejściowych. Blokada jest ujawniona publicznie ,każda osoba mająca właściwy klucz może otworzyć drzwi. Klucz jest prywatnyi jest nadany tylko zaufanym osobom, 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 należy go udostępniać.

Podczas nawiązywania połączenia z maszyną wirtualną z systemem Linux maszyna wirtualna testuje klienta SSH, aby upewnić się, że ma prawidłowy klucz prywatny. Jeśli klient ma klucz prywatny, uzyskuje dostęp 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 wszystkim osobom, ale tylko Ty (lub Twoja lokalna infrastruktura zabezpieczeń) powinien mieć dostęp do twojego klucza prywatnego.

Obsługiwane formaty kluczy SSH

Platforma Azure obsługuje obecnie pary kluczy publiczny-prywatny 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 programu Windows 10 zawierają polecenia klienta OpenSSH służące do tworzenia i używania kluczy SSH oraz tworzenia połączeń SSH z programu PowerShell lub wiersza polecenia.

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

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

Tworzenie pary kluczy SSH

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

Możesz również utworzyć pary kluczy za pomocą interfejsu wiersza polecenia platformy Azure za pomocą polecenia az sshkey create, zgodnie z opisem w tesłudze Generate and store SSH keys (Generowanie i przechowywanie kluczy SSH).

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

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

Wprowadź nazwę pliku lub użyj wartości domyślnej pokazanej w nawiasach (na przykład C:\Users\username/.ssh/id_rsa ). Wprowadź hasło dla pliku lub pozostaw to 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.

Za pomocą interfejsu wiersza polecenia platformy Azure określasz ścieżkę i nazwę pliku klucza publicznego przy użyciu parametrów az vm create--ssh-key-value i .

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

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

Jeśli korzystasz z portalu do wielu wdrożeń, możesz przekazać klucz publiczny na platformę Azure, gdzie można go łatwo wybrać podczas tworzenia maszyny wirtualnej w portalu. Aby uzyskać więcej informacji, zobacz Upload klucza SSH.

Łączenie z maszyną wirtualną

Klucz publiczny wdrożony na maszynie wirtualnej platformy Azure i klucz prywatny w systemie lokalnym, protokół SSH z maszyną wirtualną przy użyciu adresu IP lub nazwy DNS maszyny wirtualnej. Zastąp elementy azureuser i 10.111.12.123 w następującym poleceniu nazwą użytkownika administratora, adresem IP (lub w pełni kwalifikowaną nazwą domeny) i ścieżką do klucza prywatnego:

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

Jeśli nigdy wcześniej nie nałączono połączenia z tą maszyną wirtualną, zostanie poproszony o zweryfikowanie odcisku palca hostów. Zaakceptowanie przedstawionego odcisku palca jest kuszące, jednak ujawnia to możliwe osoby w trakcie ataku w środku. Należy zawsze zweryfikować odcisk palca hostów. Należy to zrobić tylko przy pierwszym połączeniu z klienta. Aby uzyskać odcisk palca hosta za pośrednictwem portalu, użyj Uruchamianie polecenia z następującym kodem: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}' .

Screenshot showing using the Run Command to validate the host fingerprint.

Aby uruchomić polecenie przy użyciu interfejsu wiersza polecenia, użyj polecenia.

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

Jeśli maszyna wirtualna korzysta z zasad dostępu just in time, musisz zażądać dostępu, zanim będzie można nawiązać połączenie z maszyną wirtualną. Aby uzyskać więcej informacji na temat zasad just in time, zobacz Manage virtual machine access using the just in time policy (Zarządzanie dostępem do maszyny wirtualnej przy użyciu zasad just in time).

Następne kroki

  • Aby uzyskać informacje o kluczach SSH w Azure Portal do użycia podczas tworzenia maszyn wirtualnych, zobacz Generowanie i przechowywanie kluczy SSHw Azure Portal .

  • Aby uzyskać informacje o kluczach SSH w interfejsie wiersza polecenia platformy Azure do użycia podczas tworzenia maszyn wirtualnych, zobacz Generowanie i przechowywanie kluczy SSH za pomocą interfejsu wiersza polecenia platformy Azure.

  • Aby uzyskać szczegółowe instrukcje, opcje i zaawansowane przykłady pracy z kluczami SSH, zobacz Szczegółowe kroki tworzenia par kluczy SSH.

  • Możesz również użyć programu PowerShell w programie Azure Cloud Shell do generowania kluczy SSH i połączeń SSH z maszynami wirtualnych z systemem Linux. Zobacz Przewodnik Szybki start programu PowerShell.

  • Jeśli masz trudności z używaniem połączenia SSH do nawiązywania połączenia z maszynami wirtualnmi z systemem Linux, zobacz Rozwiązywanie problemów z połączeniami SSH z maszyną wirtualną z systemem Linux na platformie Azure.