Avez-vous déjà essayé d’accéder à une ressource distante lors d’une session de PowerShell Remoting, seulement pour rencontrer un frustrant blocage d’accès refusé ? Ce problème courant, connu sous le nom de problème du « double saut », vous empêche d’accéder à une seconde machine distante depuis votre session actuelle.
La bonne nouvelle ? Il existe des moyens de résoudre le problème du double saut sans configurations trop complexes. Dans ce tutoriel, vous allez créer une session personnalisée qui gère sans effort l’authentification, vous faisant gagner du temps et des efforts tout en maintenant la sécurité.
Surmontez les doubles sauts avec des configurations de session et rationalisez votre flux de travail !
Exécuter PowerShell en tant qu’utilisateur différent
Si vous travaillez avec des scripts qui se connectent à des ressources distantes, vous pourriez rencontrer le problème du double saut. Ce problème se produit lorsque vos identifiants échouent à s’authentifier au-delà du premier saut dans une connexion distante.
Par exemple, considérez un script qui compte les sous-répertoires sur un ordinateur distant en utilisant un chemin UNC :
(Get-ChildItem -Path \\SRV2\c$ -Directory).Count
Si vous êtes connecté en tant qu’utilisateur qui n’a pas l’autorisation d’accéder à une ressource, vous pouvez exécuter PowerShell sous un autre compte utilisateur :
- Recherchez PowerShell dans le menu Démarrer.
- Cliquez avec le bouton droit sur le raccourci PowerShell et sélectionnez Ouvrir l’emplacement du fichier.
- Dans l’Explorateur de fichiers, maintenez la touche Maj enfoncée, cliquez avec le bouton droit sur le raccourci et sélectionnez Exécuter en tant qu’utilisateur différent.
- Entrez les identifiants d’un utilisateur ayant les autorisations nécessaires.
Après avoir démarré PowerShell en tant qu’utilisateur différent, la commande devrait maintenant réussir :
(Get-ChildItem -Path \\SRV2\c$ -Directory).Count
Astuce: Si vous exécutez fréquemment des commandes avec différents identifiants, envisagez d’utiliser la cmdlet Start-Process
avec le paramètre -Credential
. Cette approche vous permet d’ouvrir de nouvelles sessions PowerShell directement depuis la console avec des identifiants alternatifs.
Tester les connexions à distance
Vous pourriez accéder avec succès à une ressource distante localement, comme un dossier partagé, lorsque vous travaillez avec plusieurs systèmes distants. Mais vous avez ensuite découvert que la même commande produit une erreur « accès refusé » lorsqu’elle est exécutée (depuis un deuxième ordinateur distant).
Cette incohérence peut être déroutante, surtout lorsque vous êtes convaincu que vos identifiants disposent de permissions suffisantes.
Pour tester vos connexions à distance, établissez une session avec un autre ordinateur :
Enter-PSSession -ComputerName SRV3
Une fois connecté, essayez d’exécuter la même commande sur la deuxième machine :
(Get-ChildItem -Path \\SRV2\c$ -Directory).Count
Ce test aboutit souvent à une erreur « accès refusé », même si vous utilisez un compte avec des permissions.
Confirmez votre utilisateur actuel avec ce qui suit :
whoami
Ce comportement (double saut) se produit parce que PowerShell ne transmet pas vos identifiants au saut suivant. Ce mécanisme est une fonctionnalité de sécurité intégrée à l’authentification Kerberos, mais cela peut être un gros casse-tête lors de la gestion de plusieurs systèmes.
Résoudre le problème du double saut avec des configurations de session
Une solution au problème du double saut est de créer une configuration de session sur la machine intermédiaire.
Commencez par enregistrer une configuration de session sur l’ordinateur auquel vous vous connectez, dans ce cas, SRV3.
La commande suivante :
- attribue un
Nom
à la configuration de session (par exemple,Admin
). - spécifie le compte (
RunAsCredential
) sous lequel les sessions s’exécuteront. - garantit (
Force
) que la configuration est appliquée et redémarre le service WinRM.
Invoke-Command -ComputerName SRV3 -ScriptBlock { Register-PSSessionConfiguration -Name Admin -RunAsCredential 'psforsysadmins.local\adam' -Force }
PowerShell vous demande le mot de passe du compte RunAsCredential
, qui est stocké de manière sécurisée sur la machine distante. Une fois la configuration enregistrée, le service WinRM redémarre et la session est fermée.
Avec la configuration en place, vous pouvez désormais vous connecter en utilisant le paramètre NomConfiguration
:
Invoke-Command -ComputerName SRV3 -ScriptBlock { (Get-ChildItem -Path \\SRV2\c$ -Directory).Count } -ConfigurationName Admin
Cette commande effectue la même opération qu’auparavant. Cependant, elle spécifie la configuration de session Admin
, qui s’exécute sous le compte administratif spécifié.
Conseil : Limitez l’accès à la configuration de session en définissant des autorisations d’accès spécifiques aux utilisateurs ou groupes à l’aide de la cmdlet Set-PSSessionConfiguration
. Cela garantit que seuls les utilisateurs autorisés peuvent tirer parti de la configuration.
Conclusion
Dans ce guide, vous avez vu et résolu le problème du double saut dans le Remoting PowerShell. La configuration d’une configuration de session peut résoudre le problème du double saut et garantir que les informations d’identification sont transmises de manière sécurisée.
Cette solution est persistante, vous pouvez donc réutiliser la configuration même après des redémarrages, ce qui en fait une approche robuste pour gérer les sessions PowerShell à distance. Désormais, vous pouvez gérer les opérations à distance multi-sauts en toute confiance et rationaliser les flux de travail sans compromettre la sécurité.
À partir de là, envisagez d’explorer des options de sécurité avancées, telles que la restriction d’accès aux sessions ou la mise en œuvre de l’authentification basée sur des certificats. Ces améliorations peuvent renforcer davantage votre configuration de télécommande tout en gérant de manière flexible des environnements complexes.
Source:
https://adamtheautomator.com/powershell-double-hop-fix/