Partager via


Résoudre les problèmes d’accès SSH aux serveurs avec Azure Arc

Les serveurs compatibles SSH pour Arc activent les connexions SSH à des serveurs avec Arc sans nécessiter d’adresse IP publique ou d’autres ports ouverts. Cet article fournit des informations pour vous aider à résoudre les problèmes qui peuvent se produire lors de la tentative de connexion aux serveurs avec Azure Arc via SSH.

Problèmes côté client

Utilisez les informations de cette section pour vous aider à résoudre les problèmes causés par des erreurs qui se produisent sur l’ordinateur à partir duquel vous vous connectez.

Impossible de localiser les fichiers binaires du client

Ce problème se produit lorsque les binaires SSH côté client requis pour la connexion sont introuvables. Les messages d’erreur liés à ce problème sont les suivants :

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

Pour résoudre ce problème :

  • Indiquez le chemin d’accès au dossier qui contient les exécutables du client SSH à l’aide du --ssh-client-folder paramètre.
  • Vérifiez que le dossier se trouve dans la variable d’environnement PATH pour Azure PowerShell.

Incompatibilité de version du module Azure PowerShell

Si la version installée d’Az.Ssh ne prend pas en charge le module Azure PowerShell installé Az.Ssh.ArcProxy, l’erreur suivante s’affiche :

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

Pour résoudre ce problème, mettez à jour les modules Az.Ssh et Az.Ssh.ArcProxy vers les dernières versions en exécutant les commandes suivantes :

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

Az.Ssh.ArcProxy n’est pas installé

Si le module Az.Ssh.ArcProxy n’est pas installé sur l’ordinateur client, l’erreur suivante s’affiche :

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

Pour corriger cette erreur, installez le module à partir de PowerShell Gallery : Install-Module -Name Az.Ssh.ArcProxy

Autorisations insuffisantes pour exécuter le proxy

Si votre compte ne dispose pas des autorisations nécessaires pour exécuter le proxy SSH utilisé pour vous connecter, vous pouvez voir les erreurs suivantes :

  • /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

Vous pouvez résoudre ce problème en vous assurant que le compte d’utilisateur dispose des autorisations nécessaires pour exécuter le proxy SSH sur l’ordinateur de gestion.

Problèmes côté serveur

Utilisez les informations de cette section pour vous aider à résoudre les problèmes causés par des erreurs sur le serveur avec Arc auquel vous essayez de vous connecter.

Trafic SSH non autorisé sur le serveur

Ce problème se produit quand SSHD n’est pas exécuté sur le serveur ou que le trafic SSH n’est pas autorisé sur le serveur. Dans ce cas, vous pouvez voir les erreurs suivantes :

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

Pour résoudre ce problème :

  • Vérifiez que le service SSHD s’exécute sur le serveur avec Arc.
  • Assurez-vous que la fonctionnalité est activée sur votre serveur avec Arc sur le port 22 (ou un autre port nondefault) en exécutant la commande suivante :
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}}'

Problèmes d’autorisations Azure

Utilisez ces informations pour résoudre les problèmes causés par des autorisations insuffisantes.

Attributions de rôles incorrectes pour activer la connectivité SSH

Si vous n’avez pas la bonne attribution de rôle pour apporter des contributions à la ressource cible, l’erreur suivante s’affiche :

  • 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

Pour résoudre cette erreur, vérifiez que vous disposez du rôle Propriétaire ou Contributeur sur le serveur avec Arc, ou demandez à une personne disposant de l’un de ces rôles de configurer la connectivité SSH.

Attributions de rôles incorrectes pour se connecter

Ce problème se produit si vous n’avez pas l’attribution de rôle appropriée sur la ressource cible, en particulier un manque d’autorisations read . Vous pouvez voir les erreurs suivantes :

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

Pour résoudre ce problème, vérifiez que vous disposez du rôle de connexion utilisateur local de la machine virtuelle sur le serveur avec Arc auquel vous vous connectez. Si vous utilisez la connexion Microsoft Entra, vérifiez que vous disposez des rôles de connexion utilisateur de machine virtuelle ou de connexion administrateur de machine virtuelle et que l’extension de connexion Microsoft Entra SSH est installée sur le serveur Arc-Enabled.

HybridConnectivity RP non enregistré

Si le fournisseur de ressources HybridConnectivity n’est pas inscrit pour l’abonnement, l’erreur suivante peut s’afficher :

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

Pour résoudre ce problème, inscrivez le fournisseur de ressources HybridConnectivity pour l’abonnement :

  • Exécutez az provider register -n Microsoft.HybridConnectivity.
  • Confirmez la réussite en exécutant az provider show -n Microsoft.HybridConnectivity, puis vérifiez que registrationState est défini sur Registered.
  • Redémarrez l’agent hybride sur le serveur avec Arc.

Étapes suivantes