Nawiązywanie połączenia z maszyną wirtualną przy użyciu usługi Bastion i natywnego klienta systemu Linux
Ten artykuł ułatwia nawiązywanie połączenia za pośrednictwem usługi Azure Bastion z maszyną wirtualną w sieci wirtualnej przy użyciu natywnego klienta na lokalnym komputerze z systemem Linux. Funkcja natywnego klienta umożliwia nawiązywanie połączenia z docelowymi maszynami wirtualnymi za pośrednictwem usługi Bastion przy użyciu interfejsu wiersza polecenia platformy Azure i rozszerza opcje logowania w celu uwzględnienia lokalnej pary kluczy SSH i identyfikatora Entra firmy Microsoft. Aby uzyskać więcej informacji i kroków konfigurowania usługi Bastion dla natywnych połączeń klienckich, zobacz Konfigurowanie usługi Bastion dla natywnych połączeń klienckich. Połączenia za pośrednictwem klienta natywnego wymagają jednostki SKU usługi Bastion w warstwie Standardowa lub nowszej.
Po skonfigurowaniu usługi Bastion dla natywnej obsługi klienta można nawiązać połączenie z maszyną wirtualną przy użyciu natywnego klienta systemu Linux. Metoda używana do nawiązywania połączenia zależy od klienta, z którego nawiązujesz połączenie, i maszyny wirtualnej, z którą nawiązujesz połączenie. Na poniższej liście przedstawiono niektóre z dostępnych sposobów nawiązywania połączenia z poziomu klienta natywnego systemu Linux. Zobacz Łączenie z maszynami wirtualnymi , aby uzyskać pełną listę zawierającą dostępne kombinacje połączeń/funkcji klienta.
- Nawiązywanie połączenia z maszyną wirtualną z systemem Linux przy użyciu polecenia az network bastion ssh.
- Nawiązywanie połączenia z maszyną wirtualną z systemem Windows przy użyciu polecenia az network bastion tunnel.
- Połącz się z dowolną maszyną wirtualną przy użyciu polecenia az network bastion tunnel.
- Transfer plików do docelowej maszyny wirtualnej za pośrednictwem protokołu SSH przy użyciu polecenia az network bastion tunnel.
Wymagania wstępne
Przed rozpoczęciem sprawdź, czy masz następujące wymagania wstępne:
- Zainstalowano najnowszą wersję poleceń interfejsu wiersza polecenia (wersja 2.32 lub nowsza). Interfejs wiersza polecenia dla usługi Bastion można zaktualizować przy użyciu polecenia
az extension update --name bastion
. Aby uzyskać informacje o instalowaniu poleceń interfejsu wiersza polecenia, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure i Rozpoczynanie pracy z interfejsem wiersza polecenia platformy Azure. - Usługa Azure Bastion jest już wdrożona i skonfigurowana dla sieci wirtualnej. Aby uzyskać instrukcje, zobacz Konfigurowanie usługi Bastion dla natywnych połączeń klienckich.
- Maszyna wirtualna w sieci wirtualnej.
- Identyfikator zasobu maszyny wirtualnej. Identyfikator zasobu można łatwo znaleźć w witrynie Azure Portal. Przejdź do strony Przegląd maszyny wirtualnej i wybierz link Widok JSON, aby otworzyć plik JSON zasobu. Skopiuj identyfikator zasobu w górnej części strony do schowka, aby użyć go później podczas nawiązywania połączenia z maszyną wirtualną.
- Jeśli planujesz zalogować się do maszyny wirtualnej przy użyciu poświadczeń firmy Microsoft Entra, upewnij się, że maszyna wirtualna jest skonfigurowana przy użyciu jednej z następujących metod:
- Włącz logowanie microsoft Entra dla maszyny wirtualnej z systemem Windows lub maszyny wirtualnej z systemem Linux.
- Skonfiguruj maszynę wirtualną z systemem Windows, aby została przyłączona do firmy Microsoft.
- Skonfiguruj maszynę wirtualną z systemem Windows tak, aby została dołączona hybrydowa firma Microsoft Entra.
Weryfikowanie ról i portów
Sprawdź, czy następujące role i porty zostały skonfigurowane w celu nawiązania połączenia z maszyną wirtualną.
Wymagane role
Rola czytelnika na maszynie wirtualnej.
Rola czytelnika na karcie sieciowej z prywatnym adresem IP maszyny wirtualnej.
Rola czytelnika w zasobie usługi Azure Bastion.
Jeśli używasz metody logowania microsoft Entra, administrator maszyny wirtualnej lub roli logowania użytkownika maszyny wirtualnej. Musisz to zrobić tylko wtedy, gdy włączysz logowanie firmy Microsoft Entra przy użyciu procesów opisanych w jednym z następujących artykułów:
Porty
Aby nawiązać połączenie z maszyną wirtualną z systemem Linux przy użyciu natywnej obsługi klienta, musisz mieć otwarte następujące porty na maszynie wirtualnej z systemem Linux:
- Port przychodzący: SSH (22) lub
- Port przychodzący: wartość niestandardowa (następnie należy określić ten port niestandardowy podczas nawiązywania połączenia z maszyną wirtualną za pośrednictwem usługi Azure Bastion)
Aby nawiązać połączenie z maszyną wirtualną z systemem Windows przy użyciu natywnej obsługi klienta, musisz mieć otwarte następujące porty na maszynie wirtualnej z systemem Windows:
- Port przychodzący: RDP (3389) lub
- Port przychodzący: wartość niestandardowa (następnie należy określić ten port niestandardowy podczas nawiązywania połączenia z maszyną wirtualną za pośrednictwem usługi Azure Bastion)
Aby dowiedzieć się, jak najlepiej skonfigurować sieciowe grupy zabezpieczeń za pomocą usługi Azure Bastion, zobacz Praca z dostępem sieciowej grupy zabezpieczeń i usługą Azure Bastion.
Nawiązywanie połączenia z maszyną wirtualną z systemem Linux
Kroki opisane w poniższych sekcjach ułatwiają nawiązywanie połączenia z maszyną wirtualną z systemem Linux z natywnego klienta systemu Linux przy użyciu polecenia az network bastion . To rozszerzenie można zainstalować, uruchamiając polecenie az extension add --name bastion
.
Podczas nawiązywania połączenia przy użyciu tego polecenia transfery plików nie są obsługiwane. Jeśli chcesz przenieść pliki, połącz się za pomocą polecenia az network bastion tunnel .
To polecenie umożliwia wykonanie następujących czynności:
- Nawiązywanie połączenia z maszyną wirtualną z systemem Linux przy użyciu protokołu SSH.
- Uwierzytelnianie za pomocą identyfikatora entra firmy Microsoft
- Nawiąż połączenie z współbieżnych sesji maszyn wirtualnych w sieci wirtualnej.
Aby się zalogować, użyj jednego z poniższych przykładów. Po zalogowaniu się do docelowej maszyny wirtualnej klient natywny na komputerze zostanie otwarty z sesją maszyny wirtualnej.
Para kluczy SSH
Aby zalogować się do maszyny wirtualnej przy użyciu pary kluczy SSH, użyj poniższego przykładu.
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"
Uwierzytelnianie Microsoft Entra
Jeśli logujesz się do maszyny wirtualnej z obsługą logowania firmy Microsoft, użyj poniższego przykładu. Aby uzyskać więcej informacji, zobacz Maszyny wirtualne z systemem Linux platformy Azure i identyfikator entra firmy Microsoft.
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "AAD"
Nazwa użytkownika/hasło
Jeśli logujesz się do maszyny wirtualnej przy użyciu lokalnej nazwy użytkownika i hasła, użyj poniższego przykładu. Następnie zostanie wyświetlony monit o podanie hasła dla docelowej maszyny wirtualnej.
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --auth-type "password" --username "<Username>"
Połączenie SSH z adresem IP maszyny wirtualnej z systemem Linux
Zamiast identyfikatora zasobu można nawiązać połączenie z prywatnym adresem IP maszyny wirtualnej. Uwierzytelnianie identyfikatora Entra firmy Microsoft i niestandardowe porty i protokoły nie są obsługiwane w przypadku korzystania z tego typu połączenia. Aby uzyskać więcej informacji na temat połączeń opartych na adresach IP, zobacz Nawiązywanie połączenia z maszyną wirtualną — adres IP.
az network bastion
Za pomocą polecenia zastąp ciąg --target-resource-id
i --target-ip-address
określonym adresem IP, aby nawiązać połączenie z maszyną wirtualną. W poniższym przykładzie użyto --ssh-key dla metody uwierzytelniania.
az network bastion ssh --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"
Nawiązywanie połączenia z maszyną wirtualną — polecenie tunelu
Polecenie az network bastion tunnel to inny sposób, w jaki można nawiązać połączenie z maszynami wirtualnymi. Korzystając z tego polecenia, można wykonać następujące czynności:
- Nawiąż połączenie z klientów natywnych na komputerach lokalnych z systemem innych niż Windows. (Na przykład komputer z systemem Linux).
- Nawiązywanie połączenia z maszyną wirtualną przy użyciu protokołu SSH lub RDP. (Tunel bastionu nie przekazuje serwerów internetowych ani hostów).
- Użyj wybranego klienta natywnego.
- Przenieś pliki na docelową maszynę wirtualną z komputera lokalnego.
Ograniczenia:
- Logowanie przy użyciu klucza prywatnego SSH przechowywanego w usłudze Azure Key Vault nie jest obsługiwane w tej funkcji. Przed zalogowaniem się do maszyny wirtualnej z systemem Linux przy użyciu pary kluczy SSH pobierz klucz prywatny do pliku na komputerze lokalnym.
- Ta funkcja nie jest obsługiwana w usłudze Cloud Shell.
Kroki:
Zaloguj się do konta platformy Azure przy użyciu polecenia
az login
. Jeśli masz więcej niż jedną subskrypcję, możesz je wyświetlić przy użyciu usługiaz account list
i wybrać subskrypcję zawierającą zasób usługi Bastion przy użyciu poleceniaaz account set --subscription "<subscription ID>"
.Otwórz tunel do docelowej maszyny wirtualnej.
az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-resource-id "<VMResourceId or VMSSInstanceResourceId>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
Nawiąż połączenie z docelową maszyną wirtualną przy użyciu protokołu SSH lub RDP, wybranego klienta natywnego i portu komputera lokalnego określonego w poprzednim kroku.
Na przykład możesz użyć następującego polecenia, jeśli na komputerze lokalnym jest zainstalowany klient OpenSSH:
ssh <username>@127.0.0.1 -p <LocalMachinePort>
Tunel do adresu IP maszyny wirtualnej
Możesz również nawiązać połączenie z prywatnym adresem IP maszyny wirtualnej, a nie z identyfikatorem zasobu. Uwierzytelnianie identyfikatora Entra firmy Microsoft i niestandardowe porty i protokoły nie są obsługiwane w przypadku korzystania z tego typu połączenia. Aby uzyskać więcej informacji na temat połączeń opartych na adresach IP, zobacz Nawiązywanie połączenia z maszyną wirtualną — adres IP.
az network bastion tunnel
Za pomocą polecenia zastąp ciąg --target-resource-id
i --target-ip-address
określonym adresem IP, aby nawiązać połączenie z maszyną wirtualną.
az network bastion tunnel --name "<BastionName>" --resource-group "<ResourceGroupName>" --target-ip-address "<VMIPAddress>" --resource-port "<TargetVMPort>" --port "<LocalMachinePort>"
Tunel z wieloma połączeniami
Dodaj następujący kod do pliku $HOME.ssh\config.
Host tunneltunnel HostName 127.0.0.1 Port 2222 User mylogin StrictHostKeyChecking=No UserKnownHostsFile=\\.\NUL
Dodaj połączenie tunelu do ustanowionego połączenia tunelu.
az network bastion tunnel --name mybastion --resource-group myrg --target-resource-id /subscriptions/<mysubscription>/resourceGroups/myrg/providers/Microsoft.Compute/virtualMachines/myvm --resource-port 22 --port 22
Utwórz tunel SSH w tunelu bastionu.
ssh -L 2222:127.0.0.1:22 mylogin@127.0.0.1
Użyj programu VS Code, aby nawiązać połączenie z tunelem.