Partager via


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

Cet article fournit des informations sur le dépannage et la résolution des problèmes pouvant survenir lors de la tentative de connexion aux serveurs compatibles Azure Arc via SSH. Pour obtenir des informations générales, consultez Présentation de l'accès SSH aux serveurs compatibles Arc.

Problèmes côté client

Ces problèmes sont dus à des erreurs qui se produisent sur la machine à partir de laquelle l’utilisateur se connecte.

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. Erreurs possibles :

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

Résolution :

  • Indiquez le chemin du dossier qui contient les exécutables du client SSH en utilisant le paramètre --ssh-client-folder.
  • Assurez-vous que le dossier se trouve dans la variable d'environnement PATH pour Azure PowerShell

Incompatibilité de version du module Azure PowerShell

Ce problème se produit lorsque le sous-module Azure PowerShell installé, Az.Ssh.ArcProxy, n’est pas pris en charge par la version installée d’Az.Ssh. Erreur :

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

Résolution :

  • Mettre à jour les modules Az.Ssh et Az.Ssh.ArcProxy

Az.Ssh.ArcProxy n’est pas installé

Ce problème se produit lorsque le module proxy est introuvable sur la machine client. Erreur :

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

Résolution :

L’utilisateur n’a pas les autorisations nécessaires pour exécuter le proxy

Ce problème se produit lorsque l’utilisateur n’a pas les autorisations nécessaires pour exécuter le proxy SSH utilisé pour se connecter. Erreurs :

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

Résolution :

  • Vérifiez que l’utilisateur dispose des autorisations nécessaires pour exécuter le fichier proxy.

Problèmes côté serveur

Impossible de se connecter après la préversion publique

Si l’utilisateur a participé à la préversion publique et a mis à jour son agent Arc et Azure CLI/PowerShell vers les versions de disponibilité générale, la connectivité peut échouer.

Résolution :

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. Erreur :

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

Résolution :

  • 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 compatible Arc sur le port 22 (ou un autre port autre que celui par défaut)
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

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

Ce problème se produit lorsque l’utilisateur actuel n’a pas l’attribution de rôle appropriée pour apporter des contributions à la ressource cible. Erreur :

  • 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

Résolution :

  • Vérifiez que vous disposez du rôle Propriétaire ou Contributeur sur la ressource ou contactez le propriétaire/contributeur de la ressource pour configurer la connectivité SSH.

Attributions de rôles incorrectes pour se connecter

Ce problème se produit lorsque l'utilisateur actuel ne dispose pas du rôle approprié sur la ressource cible, notamment en cas de manque d'autorisations read. Erreurs possibles :

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

Résolution :

  • Assurez-vous que vous disposez du rôle de connexion d'utilisateur local de machine virtuelle sur la ressource à laquelle vous vous connectez. Si vous utilisez la connexion Microsoft Entra, assurez-vous que vous disposez des rôles de connexion utilisateur de machine virtuelle ou de connexion d'administrateur de machine virtuelle et que l'extension de connexion Microsoft Entra SSH est installée sur le serveur compatible Arc.

HybridConnectivity RP non enregistré

Ce problème se produit lorsque le fournisseur de ressources HybridConnectivity n’est pas inscrit pour l’abonnement. Erreur :

  • La demande d’informations Azure Relay a échoué : (NoRegisteredProviderFound) Code : NoRegisteredProviderFound

Résolution :

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

Impossible de se connecter après la mise à jour de l’outil CLI et de l’agent Arc

Ce problème se produit lorsque la commande mise à jour crée une configuration de service avant la mise à jour de l’agent Arc. Cela affecte uniquement les versions d’Azure Arc antérieures à la version 1.31 lors de la mise à jour vers une version 1.31 ou ultérieure. Erreur :

  • Connexion fermée par le port UNKNOWN 65535

    Résolution :

    • Supprimez la configuration de service existante et autorisez-la à être recréée par la commande CLI lors de la connexion suivante. Exécutez la commande suivante :
      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
      

Désactivez SSH sur les serveurs avec Arc

Cette fonctionnalité peut être désactivée en effectuant les actions suivantes :

  • Supprimez le port SSH et la fonctionnalité du serveur avec 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\"}}'
    
  • Supprimez le point de terminaison de connectivité par défaut :

    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
    

Étapes suivantes