Qui n’a jamais coupé la branche sur laquelle il était assis?
En voulant aller trop vite, il arrive parfois que le port RDP se trouve bloqué par un Firewall, ou encore qu’on désactive le service RDP sur une VM à distance…
Voici une petite méthode qui fonctionne en LAN comme sur Azure, pour rétablir le service et ainsi reprendre la main.
Pour cela nous allons faire appel à notre ami : PSSession.
Dans ce test, je vais utiliser deux VMs dans Azure.
Revenons un peu sur PSSession :
Le but est donc d’ouvrir une session PowerShell sur un poste à distance. Par la suite, on exécutera des commandes.
Les machines n’ont pas besoin d’être dans un domaine AD, ni dans le même domaine.
Première étape, faire un PSSession sur la machine cible
Voici un schéma rapide de mon test
Mes deux machines sont sur le même subnet. Elles peuvent discuter entre elles.
Si on fait un PSSession, nous obtenons une erreur :
Mince… Le certificat poussé par la machine ne porte pas son nom… Et oui, elle porte le nom de son Cloud Service !
Pour rappel, le Cloud Service peut être vu comme une enveloppe dans laquelle se trouve une ou plusieurs VM. C’est le Cloud Service qui porte les services de Load Balancer & endpoints.
Donc nous allons ouvrir un endpoint afin de se connecter à la VM par l’extérieur. Si vous souhaitez restreindre l’accès encore plus finement, vous pouvez mettre en places des ACLs.
Sur la VM, aller sur l’onglet ENDPOINTS et cliquer sur ADD en bas
Selectionner un Endoint Standalone
Vous pouvez sélectionner PowerShell dans les templates d’ouvertures de ports.
C’est bien le port 5986. Vous pouvez changer le port public afin de ne pas laisser le port par defaut.
Donc maintenant nous pouvons faire un PSSession sur le Cloud Service.
Mais malheureusement encore une erreur !
Le certificat étant Autosigné, notre serveur ne veut pas prendre le risque de s’y connecter.
Bon, nous allons devoir récupérer le certificat et l’installer sur notre machine temporairement.
Voici une technique avec Google Chrome pour télécharger le certificat
Se connecter sur notre serveur sur le port PowerShell
On va quand même vérifier qu’il s’agisse bien de notre certificat
On le télécharge
Maintenant que nous l’avons récuperé, il faut l’installer dans le magasin Trusted Root Certification Authorities .
Maintenant nous pouvons faire notre PSSession sans soucis !
Mais c’était plutôt fastidieux non?
Deuxième étape, activer le RDP ou désactiver le Firewall
Du coup voici deux techniques pour vous redonner la main en cas de mauvaise manipulation
Activer le RDP
On exécute la commande PowerShell suivante :
1 |
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server'-name "fDenyTSConnections" -Value 0 |
Désactiver le Firewall Windows
Et voici la commande pour le Firewall Windows. Celle-ci va désactiver le firewall sur tous les profils :
1 |
Get-NetFirewallProfile | Set-NetFirewallProfile –Enabled False |
Et si on faisait ça en script?
J’était en train de pencher sur le sujet et en cherchant un commande, je suis tombé sur un script qui fait déjà ça très bien !
https://gist.github.com/mgreenegit/135893b4018baeed7f25.js
Amusez vous bien dans Azure !
-Mickaël