Comment configurer PowerShell Remoting pour qu’il fonctionne sur un groupe de travail (sans domaine)
Configurer PowerShell Remoting (PSRemoting) sur des ordinateurs non membres d’un domaine peut s’avérer complexe. Si vous avez déjà tenté de vous connecter à une machine d’un groupe de travail et rencontré des erreurs obscures concernant l’authentification ou TrustedHosts, rassurez-vous, vous n’êtes pas seul. En effet, WinRM (Windows Remote Management) utilise par défaut Kerberos, qui requiert un domaine. Or, dans un groupe de travail, il est nécessaire d’opter pour NTLM, voire de configurer des certificats SSL. Ce guide explique comment faire fonctionner PSRemoting dans ces situations, car il est parfois indispensable d’exécuter des scripts ou de redémarrer des PC distants sans avoir à configurer l’intégralité d’Active Directory. Sur certaines configurations, cela peut fonctionner immédiatement ; sur d’autres, il faudra explorer le profil réseau, le pare-feu et TrustedHosts. L’objectif ? Pouvoir exécuter des commandes PowerShell à distance, de manière sécurisée et fiable, même si ces ordinateurs se trouvent sur un réseau local sans domaine.
Comment résoudre les problèmes de communication à distance PowerShell dans un environnement de groupe de travail
Activez le service WinRM sur l’hôte distant.
C’est l’étape zéro, en réalité. Si WinRM n’est pas en cours d’exécution, rien d’autre n’a d’importance. C’est crucial : si le service n’est pas opérationnel, la connexion à distance est impossible.- Connectez-vous à la machine à laquelle vous souhaitez vous connecter (via RDP ou physiquement).- Ouvrez PowerShell en tant qu’administrateur.- Vérifiez si le service WinRM est en cours d’exécution :
Get-Service -Name "WinRM" | select status
– S’il n’est pas en cours d’exécution, démarrez le service et configurez-le pour qu’il démarre automatiquement :
Enable-PSRemoting -Force
Cette commande effectue plusieurs opérations simultanément : elle active WinRM, ouvre les règles du pare-feu et modifie certains paramètres par défaut. Attention : si le type de réseau est défini sur Public, l’erreur suivante s’affichera :
Set-WSManQuickConfig :...WinRM firewall exception will not work since one of the network connection types on this machine is set to Public.
Comme Windows considère le réseau comme public, il bloque les règles de pare-feu nécessaires. Vous devez le configurer en mode privé : – Exécutez :
Set-NetConnectionProfile -NetworkCategory Private
ou, si vous souhaitez ignorer complètement cette vérification (moins sécurisé, mais rapide), exécutez :
Enable-PSRemoting –SkipNetworkProfileCheck
—
Autoriser les connexions à distance via le pare-feu Windows Defender
Ensuite, vous devez vous assurer que le port TCP 5985 (HTTP) est ouvert aux connexions entrantes. Vous pouvez le faire avec PowerShell : – Si vous souhaitez autoriser uniquement les connexions provenant de l’adresse IP de votre ordinateur d’administration (pour une sécurité accrue) :
Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress 192.168.13.100 -Action Allow
– Ou alors, ouvrez-le à tous (moins sécurisé, mais parfois nécessaire) :
Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress * -Action Allow
Conseil : Vérifiez toujours que la règle est activée et active :
Get-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)"
—
Configurer TrustedHosts sur la machine cliente
C’est là que les choses se compliquent : dans un groupe de travail, Kerberos n’est pas disponible. WinRM utilise alors NTLM ou HTTPS. Pour que NTLM fonctionne, votre machine cliente doit faire confiance à la machine distante.– Sur le poste administrateur, ajoutez l’adresse IP ou le nom de domaine complet (FQDN) de la cible à la liste des hôtes de confiance.
Set-Item wsman:\localhost\Client\TrustedHosts -Value "192.168.13.222" -Force
– Pour vérifier les hôtes de confiance actuels :
get-Item WSMan:\localhost\Client\TrustedHosts
– Pour effacer TrustedHosts :
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "" -Force
– Pour ajouter plusieurs éléments (en utilisant -Concaténer) :
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "192.168.13.222" -Concatenate
Avertissement : Utiliser ` *` dans TrustedHosts revient à laisser la porte grande ouverte ; cette pratique est déconseillée sauf dans le cadre de tests actifs.
Connexion et exécution de commandes à distance
Une fois WinRM activé, les règles de pare-feu définies et les hôtes de confiance configurés, vous devez tester la connexion : – Vérifiez la connectivité :
Test-NetConnection 192.168.13.222 -Port 5985
– Confirmer WinRM sur la cible :
Test-WsMan 192.168.13.222
Si cela est correct, essayez de créer une session PowerShell à distance :
Enter-PSSession -ComputerName 192.168.13.222 -Credential (Get-Credential)
*Remarque :* Vous serez invité à saisir vos informations d’identification. Le nom d’utilisateur doit être au format « nom_utilisateurCOMPUTERNAME\username » ou correspondre au nom d’utilisateur local si celui-ci existe déjà.Conseil de dépannage : Si vous rencontrez des erreurs de connexion ou d’authentification, vérifiez si la machine distante accepte uniquement Kerberos (ce qui est impossible dans un groupe de travail) ou si vous devez changer de schéma d’authentification : – Vérifiez le schéma d’authentification :
Get-ChildItem -Path WSMan:\localhost\Service\Auth\
– Si vous utilisez NTLM, assurez-vous que les hôtes de confiance distants sont configurés et que vous n’essayez pas d’utiliser Kerberos.
Utilisez CredSSP ou HTTPS pour une meilleure sécurité.
Parce que NTLM peut être vulnérable, surtout si vous l’autorisez largement. Une alternative consiste à configurer IIS avec des certificats SSL sur la machine distante, afin de pouvoir se connecter via HTTPS, ce qui ne nécessite aucune modification de TrustedHosts. Ou encore, utiliser CredSSP pour déléguer les informations d’identification de manière sécurisée, mais c’est plus complexe.
Résumé des commandes communes
- Activer WinRM :
Enable-PSRemoting -Force - Modifier le profil réseau en Privé :
Set-NetConnectionProfile -NetworkCategory Private - Ouvrir le port 5985 du pare-feu :
Set-NetFirewallRule -DisplayName "Windows Remote Management (HTTP-In)" -RemoteAddress * -Action Allow - Ajouter l’adresse IP à TrustedHosts :
Set-Item wsman:\localhost\Client\TrustedHosts -Value "192.168.13.222" -Force - Tester la connexion WinRM :
Test-WsMan 192.168.13.222 - Se connecter à la machine distante :
Enter-PSSession -ComputerName 192.168.13.222 -Credential (Get-Credential)
—
Conclure
Configurer PSRemoting dans un groupe de travail peut s’avérer complexe, d’autant plus que Windows applique par défaut des paramètres de sécurité qui entravent l’administration à distance sans domaine. Cependant, en suivant les étapes décrites ci-dessus, vous pouvez y parvenir. N’oubliez pas que la confiance envers votre réseau est primordiale : ne laissez pas TrustedHosts défini sur * sauf en cas d’absolue nécessité. De plus, gardez à l’esprit que dans les environnements importants ou sensibles, l’authentification HTTPS ou par certificat est indispensable. Espérons que ces informations vous éviteront bien des frustrations. Ce n’est pas toujours simple, mais c’est faisable, et bien plus simple qu’auparavant.