Azure — RDP ou SSH impossible vers une VM
```text ssh: connect to host 10.20.1.4 port 22: Connection timed out Remote Desktop can't connect to the remote computer ```
Détecter
La connexion RDP (3389) ou SSH (22) vers une VM Azure expire ou est refusée ; la VM apparaît « en cours d'exécution » dans le portail.
Symptômes
La connexion RDP (3389) ou SSH (22) vers une VM Azure expire ou est refusée ; la VM apparaît « en cours d'exécution » dans le portail.
Environnement
VM Windows ou Linux dans un VNet, NSG sur la carte réseau et/ou le sous-réseau, accès par Azure Bastion, VPN ou IP publique.
Cause racine
Le flux est bloqué à l'une des couches : nom ou IP incorrect, route (UDR vers un pare-feu), NSG (règle manquante ou Deny prioritaire, aux deux niveaux carte et sous-réseau), pare-feu de l'OS, service RDP/SSH arrêté, ou identité (compte verrouillé, clé SSH absente). « Timeout » oriente vers le réseau ; « connexion refusée » vers le service.
Diagnostic
- Périmètre : une seule VM ou toutes ? depuis quel réseau ? depuis quand (changement récent) ?
- Plateforme : état de la VM, Resource Health, Service Health.
- Réseau :
az network watcher test-ip-flow(quelle règle NSG décide), Connection troubleshoot, routes effectives de la carte réseau. - Hôte : diagnostics de démarrage (capture d'écran, console série), Run Command pour vérifier le service (
systemctl status ssh,Get-Service TermService) et le pare-feu local. - Identité : compte, mot de passe, clé publique, groupe « Utilisateurs du Bureau à distance ».
Solution
Corriger uniquement la couche fautive : règle NSG ciblée (source restreinte, jamais Internet entier pour 22/3389), route, service redémarré, ou réinitialisation de l'accès par l'extension VMAccess (az vm user update). Préférer Azure Bastion ou le VPN à une IP publique.
Commandes
az vm get-instance-view -g rg-app -n vm-app-01 --query instanceView.statuses[1].displayStatus
az network watcher test-ip-flow --vm vm-app-01 -g rg-app --direction Inbound --protocol TCP --local 10.20.1.4:22 --remote 10.30.0.5:50000
az network nic show-effective-route-table -g rg-app -n vm-app-01-nic -o table
az vm run-command invoke -g rg-app -n vm-app-01 --command-id RunShellScript --scripts "systemctl status ssh"
az vm user update -g rg-app -n vm-app-01 -u azureuser --ssh-key-value ~/.ssh/id_ed25519.pub
Prévention
Bastion ou accès juste-à-temps (JIT) de Defender for Cloud, NSG en IaC relus, supervision du service d'accès, procédure documentée.