Udostępnij przez


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

Protokół SSH dla serwerów z obsługą usługi Arc umożliwia nawiązywanie połączeń opartych na protokole SSH z serwerami z obsługą usługi Arc bez konieczności używania publicznego adresu IP lub dodatkowych otwartych portów. Ten artykuł zawiera informacje ułatwiające rozwiązywanie 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.

Problemy po stronie klienta

Skorzystaj z informacji w tej sekcji, aby rozwiązać problemy spowodowane błędami występującymi na maszynie, z której nawiązujesz połączenie.

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. Komunikaty o błędach związane z tym problemem obejmują:

  • 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'.

Aby rozwiązać ten problem:

  • 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

Jeśli zainstalowana wersja narzędzia Az.Ssh nie obsługuje zainstalowanego modułu programu Azure PowerShell Az.Ssh.ArcProxy, zostanie wyświetlony następujący 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.

Aby rozwiązać ten problem, zaktualizuj moduły Az.Ssh i Az.Ssh.ArcProxy do najnowszych wersji, uruchamiając następujące polecenia:

Update-Module -Name Az.Ssh
Update-Module -Name Az.Ssh.ArcProxy

Nie zainstalowano modułu Az.Ssh.ArcProxy

Jeśli moduł Az.Ssh.ArcProxy nie jest zainstalowany na maszynie klienckiej, zostanie wyświetlony następujący 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).

Aby naprawić ten błąd, zainstaluj moduł z galerii programu PowerShell: Install-Module -Name Az.Ssh.ArcProxy

Niewystarczające uprawnienia do wykonywania serwera proxy

Jeśli Twoje konto nie ma uprawnień do wykonywania serwera proxy SSH używanego do nawiązywania połączenia, mogą zostać wyświetlone następujące 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

Ten problem można rozwiązać, upewniając się, że konto użytkownika ma uprawnienia do wykonywania serwera proxy SSH na maszynie zarządzania.

Problemy po stronie serwera

Skorzystaj z informacji w tej sekcji, aby rozwiązać problemy spowodowane błędami na serwerze z obsługą usługi Arc, z którym próbujesz nawiązać połączenie.

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. W takim przypadku mogą wystąpić następujące błędy:

  • {"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}.

Aby rozwiązać ten problem:

  • 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), uruchamiając następujące polecenie:
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

Skorzystaj z tych informacji, aby rozwiązać problemy spowodowane niewystarczającymi uprawnieniami.

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

Jeśli nie masz odpowiedniego przypisania roli, aby wnieść wkład w zasób docelowy, zostanie wyświetlony następujący 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

Aby rozwiązać ten błąd, upewnij się, że masz rolę Właściciel lub Współautor na serwerze z obsługą usługi Arc lub poproś kogoś z jedną z tych ról o skonfigurowanie łączności SSH.

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

Ten problem występuje, jeśli nie masz odpowiedniego przypisania roli w zasobie docelowym, a szczególnie, jeśli brakuje Ci uprawnień read. Mogą wystąpić następujące 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.

Aby rozwiązać ten problem, upewnij się, że masz rolę Logowania lokalnego użytkownika maszyny wirtualnej na serwerze z obsługą Arc, z którym nawiązujesz połączenie. Jeśli korzystasz z logowania Microsoft Entra, upewnij się, że masz role Użytkownik logujący się do maszyny wirtualnej lub Administrator logujący się do maszyny wirtualnej, oraz że rozszerzenie Microsoft Entra SSH Login jest zainstalowane na serwerze Arc-Enabled.

Nie zarejestrowano dostawcy połączenia hybrydowego

Jeśli dostawca zasobów HybridConnectivity nie jest zarejestrowany dla subskrypcji, może zostać wyświetlony następujący błąd:

  • Request for Azure Relay Information Failed: (NoRegisteredProviderFound) Code: NoRegisteredProviderFound

Aby rozwiązać ten problem, zarejestruj dostawcę zasobów HybridConnectivity dla subskrypcji:

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

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.