Połączenie do maszyny wirtualnej 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łączenie ions za pośrednictwem klienta natywnego wymagają jednostki SKU usługi Bastion w warstwie Standardowa.

Diagram shows a connection via native client.

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 Połączenie do maszyn wirtualnych, aby uzyskać pełną listę zawierającą dostępne kombinacje połączeń/funkcji klienta.

  • Połączenie do maszyny wirtualnej z systemem Linux przy użyciu polecenia az network bastion ssh.
  • Połączenie do maszyny wirtualnej z systemem Windows przy użyciu polecenia az network bastion tunnel.
  • Połączenie do dowolnej maszyny wirtualnej przy użyciu polecenia az network bastion tunnel.
  • Przekaż pliki do docelowej maszyny wirtualnej za pośrednictwem protokołu SSH przy użyciu polecenia az network bastion tunnel. Pobieranie pliku z docelowej maszyny wirtualnej do klienta lokalnego nie jest obecnie obsługiwane dla tego polecenia.

Wymagania wstępne

Przed rozpoczęciem sprawdź, czy masz następujące wymagania wstępne:

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

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 przekazać pliki, połącz się za pomocą polecenia az network bastion tunnel .

To polecenie umożliwia wykonanie następujących czynności:

  • Połączenie do maszyny wirtualnej z systemem Linux przy użyciu protokołu SSH.
  • Uwierzytelnianie za pomocą identyfikatora entra firmy Microsoft
  • Połączenie do 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. Należy pamiętać, że uwierzytelnianie 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 Połączenie do maszyny wirtualnej — 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-addres "<VMIPAddress>" --auth-type "ssh-key" --username "<Username>" --ssh-key "<Filepath>"

Połączenie do maszyny wirtualnej — 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:

  • Połączenie z klientów natywnych na komputerach lokalnych innych niż Windows. (Na przykład komputer z systemem Linux).
  • Połączenie do maszyny wirtualnej przy użyciu protokołu SSH lub RDP. (Tunel bastionu nie przekazuje serwerów internetowych ani hostów).
  • Użyj wybranego klienta natywnego.
  • Przekaż pliki do docelowej maszyny wirtualnej z komputera lokalnego. Pobieranie pliku z docelowej maszyny wirtualnej do klienta lokalnego nie jest obecnie obsługiwane dla tego polecenia.

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:

  1. 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ługi az account list i wybrać subskrypcję zawierającą zasób usługi Bastion przy użyciu polecenia az account set --subscription "<subscription ID>".

  2. 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>"
    
  3. Połączenie do docelowej maszyny wirtualnej 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 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 Połączenie do maszyny wirtualnej — 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

  1. 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
    
  2. 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
    
  3. Utwórz tunel SSH w tunelu bastionu.

    ssh -L 2222:127.0.0.1:22 mylogin@127.0.0.1
    
  4. Użyj programu VS Code, aby nawiązać połączenie z tunelem.

Następne kroki

Przekazywanie lub pobieranie plików