Jak używać kluczy SSH w systemie 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ć 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ż wygenerować i przechowywać w witrynie 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 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 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 publiczny-prywatny, nazywanej również kluczami SSH.
Para kluczy publiczny-prywatny jest jak blokada w drzwiach frontonu. Blokada jest widoczna 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.
Podczas nawiązywania 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ć pojedynczej 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 dowolnej osobie, ale tylko Ty (lub lokalna infrastruktura zabezpieczeń) powinien mieć dostęp do klucza prywatnego.
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.
Klienci SSH
Najnowsze wersje systemu 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żesz użyć usługi Cloud Shell w przeglądarce internetowej, w witrynie Azure Portal lub jako terminalu w programie 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 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.
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.
Aby utworzyć parę kluczy SSH na komputerze lokalnym przy użyciu ssh-keygen
polecenia programu PowerShell lub wiersza polecenia, użyj następującego polecenia:
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.
Za pomocą interfejsu wiersza polecenia platformy Azure należy określić ścieżkę i nazwę pliku klucza publicznego przy użyciu az vm create
polecenia i parametr .--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 korzystasz z wielu 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ą
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. Zastąp ciąg azureuser i 10.111.12.123 w poniższym 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 ataku środkowym. Zawsze należy zweryfikować odcisk palca hostów. 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 polecenia Uruchom za pomocą następującego polecenia: ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub | awk '{print $2}'
.
Aby uruchomić polecenie przy użyciu interfejsu az vm run-command invoke
wiersza polecenia, użyj 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 maszyn wirtualnych przy użyciu zasad just in time.
Następne kroki
Aby uzyskać informacje o kluczach SSH w witrynie Azure Portal do użycia podczas tworzenia maszyn wirtualnych, zobacz Generowanie i przechowywanie kluczy SSH w witrynie 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.
Jeśli masz trudności z nawiązywaniem połączenia przy użyciu protokołu SSH z maszynami wirtualnymi z systemem Linux, zobacz Rozwiązywanie problemów z połączeniami SSH z maszyną wirtualną z systemem Linux platformy Azure.