Udostępnij za pośrednictwem


Rozwiązywanie problemów z dostępem SSH do serwerów platformy Azure z obsługą usługi Azure Arc

Ten artykuł zawiera informacje na temat rozwiązywania i rozwiązywania problemów, które mogą wystąpić podczas próby nawiązania połączenia z serwerami z obsługą usługi Azure Arc za pośrednictwem protokołu SSH. Aby uzyskać ogólne informacje, zobacz Omówienie dostępu SSH do serwerów z obsługą usługi Arc.

Problemy po stronie klienta

Te problemy są spowodowane błędami występującymi na komputerze, z którego nawiązuje połączenie użytkownik.

Nie można zlokalizować plików binarnych klienta

Ten problem występuje, gdy nie można odnaleźć plików binarnych SSH po stronie klienta wymaganych do nawiązania połączenia. Możliwe błędy:

  • Failed to create ssh key file with error: \<ERROR\>.
  • Failed to run ssh command with error: \<ERROR\>.
  • Failed to get certificate info with error: \<ERROR\>.
  • Failed to create ssh key file with error: [WinError 2] The system cannot find the file specified.
  • Failed to create ssh key file with error: [Errno 2] No such file or directory: 'ssh-keygen'.

Rozwiązanie:

  • Podaj ścieżkę do folderu zawierającego pliki wykonywalne klienta SSH przy użyciu parametru --ssh-client-folder.
  • Upewnij się, że folder znajduje się w zmiennej środowiskowej PATH dla programu Azure PowerShell

Niezgodność wersji modułu programu Azure PowerShell

Ten problem występuje, gdy zainstalowany moduł podrzędny programu Azure PowerShell Az.Ssh.ArcProxy nie jest obsługiwany przez zainstalowaną wersję modułu Az.Ssh. Błąd:

  • This version of Az.Ssh only supports version 1.x.x of the Az.Ssh.ArcProxy PowerShell Module. The Az.Ssh.ArcProxy module {ModulePath} version is {ModuleVersion}, and it is not supported by this version of the Az.Ssh module. Check that this version of Az.Ssh is the latest available.

Rozwiązanie:

  • Aktualizowanie modułów Az.Ssh i Az.Ssh.ArcProxy

Nie zainstalowano modułu Az.Ssh.ArcProxy

Ten problem występuje, gdy moduł proxy nie zostanie znaleziony na komputerze klienckim. Błąd:

  • Failed to find the PowerShell module Az.Ssh.ArcProxy installed in this machine. You must have the Az.Ssh.Proxy PowerShell module installed in the client machine in order to connect to Azure Arc resources. You can find the module in the PowerShell Gallery (see: https://aka.ms/PowerShellGallery-Az.Ssh.ArcProxy).

Rozwiązanie:

Użytkownik nie ma uprawnień do wykonywania serwera proxy

Ten problem występuje, gdy użytkownik nie ma uprawnień do wykonywania serwera proxy SSH używanego do nawiązywania połączenia. Błędy:

  • /bin/bash: line 1: exec: /usr/local/share/powershell/Modules/Az.Ssh.ArcProxy/1.0.0/sshProxy_linux_amd64_1.3.022941: cannot execute: Permission denied
  • CreateProcessW failed error:5 posix_spawnp: Input/output error

Rozwiązanie:

  • Upewnij się, że użytkownik ma uprawnienia do wykonywania pliku serwera proxy.

Problemy po stronie serwera

Nie można nawiązać połączenia po publicznej wersji zapoznawczej

Jeśli użytkownik uczestniczył w publicznej wersji zapoznawczej i zaktualizował agenta usługi Arc oraz interfejs wiersza polecenia platformy Azure/program PowerShell do wersji ogólnej dostępności, łączność może zakończyć się niepowodzeniem.

Rozwiązanie:

  • Ponownie włącz funkcje na serwerach z obsługą usługi Azure Arc.

Ruch SSH nie jest dozwolony na serwerze

Ten problem występuje, gdy usługa SSHD nie jest uruchomiona na serwerze lub ruch SSH nie jest dozwolony na serwerze. Błąd:

  • {"level":"fatal","msg":"sshproxy: error copying information from the connection: read tcp 192.168.1.180:60887-\u003e40.122.115.96:443: wsarecv: An existing connection was forcibly closed by the remote host.","time":"2022-02-24T13:50:40-05:00"}
  • {"level":"fatal","msg":"sshproxy: error connecting to the address: 503 connection to localhost:22 failed: dial tcp [::1]:22: connectex: No connection could be made because the target machine actively refused it.. websocket: bad handshake","proxyVersion":"1.3.022941"}
  • SSH connection is not enabled in the target port {Port}.

Rozwiązanie:

  • Upewnij się, że usługa SSHD jest uruchomiona na serwerze z obsługą usługi Arc.
  • Upewnij się, że funkcja jest włączona na serwerze z obsługą usługi Arc na porcie 22 (lub innym porcie bez definicji)
az rest --method put --uri https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default/serviceconfigurations/SSH?api-version=2023-03-15 --body '{\"properties\": {\"serviceName\": \"SSH\", \"port\": \"22\"}}'

Problemy z uprawnieniami platformy Azure

Nieprawidłowe przypisania ról umożliwiające łączność SSH

Ten problem występuje, gdy bieżący użytkownik nie ma odpowiedniego przypisania roli do współtworzenia zasobu docelowego. Błąd:

  • Client is not authorized to create a Default connectivity endpoint for {Name} in the Resource Group {ResourceGroupName}. This is a one-time operation that must be performed by an account with Owner or Contributor role to allow connections to target resource

Rozwiązanie:

  • Upewnij się, że masz rolę Właściciel lub Współautor w zasobie lub skontaktuj się z właścicielem/współautorem zasobu, aby skonfigurować łączność SSH.

Nieprawidłowe przypisania ról do nawiązania połączenia

Ten problem występuje, gdy bieżący użytkownik nie ma odpowiedniego przypisania roli w zasobie docelowym, w szczególności brak read uprawnień. Możliwe błędy:

  • Unable to determine the target machine type as Azure VM or Arc Server
  • Unable to determine that the target machine is an Arc Server
  • Unable to determine that the target machine is an Azure VM
  • Permission denied (publickey).
  • Request for Azure Relay Information Failed: (AuthorizationFailed) The client '\<user name\>' with object id '\<ID\>' does not have authorization to perform action 'Microsoft.HybridConnectivity/endpoints/listCredentials/action' over scope '/subscriptions/\<Subscription ID\>/resourceGroups/\<Resource Group\>/providers/Microsoft.HybridCompute/machines/\<Machine Name\>/providers/Microsoft.HybridConnectivity/endpoints/default' or the scope is invalid. If access was recently granted, please refresh your credentials.

Rozwiązanie:

  • Upewnij się, że masz rolę Logowanie użytkownika lokalnego maszyny wirtualnej w zasobie, z którym nawiązujesz połączenie. W przypadku korzystania z logowania firmy Microsoft Entra upewnij się, że masz role logowania użytkownika maszyny wirtualnej lub identyfikatora logowania administratora maszyny wirtualnej oraz że rozszerzenie Microsoft Entra SSH Login jest zainstalowane na serwerze z obsługą usługi Arc.

Nie zarejestrowano dostawcy połączenia hybrydowego

Ten problem występuje, gdy dostawca zasobów HybridConnectivity nie jest zarejestrowany dla subskrypcji. Błąd:

  • Żądanie informacji usługi Azure Relay nie powiodło się: (NoRegisteredProviderFound) Kod: NoRegisteredProviderFound

Rozwiązanie:

  • Uruchom polecenie az provider register -n Microsoft.HybridConnectivity
  • Potwierdź powodzenie, uruchamiając polecenie az provider show -n Microsoft.HybridConnectivity, sprawdź, czy registrationState ustawiono wartość Registered
  • Uruchom ponownie agenta hybrydowego na serwerze z obsługą usługi Arc

Nie można nawiązać połączenia po zaktualizowaniu narzędzia interfejsu wiersza polecenia i agenta usługi Arc

Ten problem występuje, gdy zaktualizowane polecenie tworzy nową konfigurację usługi przed zaktualizowaniem agenta usługi Arc. Będzie to miało wpływ tylko na wersje usługi Azure Arc starsze niż 1.31 podczas aktualizowania do wersji 1.31 lub nowszej. Błąd:

  • Połączenie zamknięte przez NIEZNANY port 65535

    Rozwiązanie:

    • Usuń istniejącą konfigurację usługi i zezwól na jej ponowne utworzenie za pomocą polecenia interfejsu wiersza polecenia w następnym połączeniu. Uruchom polecenie
      az rest --method delete --uri https://management.azure.com/subscriptions/<SUB_ID>/resourceGroups/<RG_NAME>/providers/Microsoft.HybridCompute/machines/<VM_NAME>/providers/Microsoft.HybridConnectivity/endpoints/default/serviceconfigurations/SSH?api-version=2023-03-15
      

Wyłączanie protokołu SSH z serwerami z obsługą usługi Arc

Tę funkcję można wyłączyć, wykonując następujące czynności:

  • Usuń port I funkcjonalność protokołu SSH z serwera z obsługą usługi Arc:

    az rest --method delete --uri https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default/serviceconfigurations/SSH?api-version=2023-03-15 --body '{\"properties\": {\"serviceName\": \"SSH\", \"port\": \"22\"}}'
    
  • Usuń domyślny punkt końcowy łączności:

    az rest --method delete --uri https://management.azure.com/subscriptions/<subscription>/resourceGroups/<resourcegroup>/providers/Microsoft.HybridCompute/machines/<arc enabled server name>/providers/Microsoft.HybridConnectivity/endpoints/default?api-version=2023-03-15
    

Następne kroki

  • Dowiedz się więcej o dostępie SSH do serwerów z obsługą usługi Azure Arc.
  • Dowiedz się więcej o rozwiązywaniu problemów z połączeniem agenta.