Pour établir une connexion entre le plug-in PowerShell et Windows PowerShell, vous devez configurer WinRM de sorte que l'un des protocoles de communication pris en charge soit utilisé.

Le plug-in PowerShell prend en charge Windows Remote Management (WinRM) 2.0 comme protocole de gestion.

Les méthodes d'authentification suivantes sont prises en charge.
Méthode d'authentification Détails
Basique Mécanisme d'authentification non sécurisé nécessitant un nom d'utilisateur et un mot de passe.
Kerberos Protocole d'authentification sécurisé qui utilise des tickets pour vérifier l'identité du client et du serveur.
Note : Le plug-in PowerShell ne prend pas en charge la délégation des informations d'identification de l'utilisateur dans WinRM, et CredSSP n'est pas une méthode d'authentification prise en charge.

WinRM via HTTP

Le plug-in PowerShell prend en charge la communication avec l'hôte WinRM via le protocole HTTP. Même si WinRM authentifie la communication, le transfert de données n'est pas chiffré et est envoyé sous forme de texte brut sur le réseau. Vous devez utiliser le protocole HTTP si IPSec est configuré entre les machines qui communiquent.

Pour utiliser l'authentification de base, vous devez définir la propriété AllowUnencrypted sur true dans la configuration du service et du client WinRM. Pour obtenir un exemple de configuration HTTP, reportez-vous à la section Configurer WinRM pour utiliser le protocole HTTP.

WinRM via HTTPS

Le plug-in PowerShell prend en charge la communication avec l'hôte WinRM via le protocole HTTPS. Vous pouvez utiliser le protocole HTTPS si vous souhaitez adopter une méthode de communication plus sûre.

Pour utiliser le protocole HTTPS, vous devez générer un certificat pour l'authentification du serveur et installer le certificat sur l'hôte WinRM. Pour obtenir un exemple de configuration HTTPS, reportez-vous à la section Configurer WinRM pour utiliser le protocole HTTPS.

authentification Kerberos

Vous pouvez utiliser l'authentification Kerberos lorsque vous ajoutez et gérez un hôte PowerShell. L'authentification Kerberos permet aux utilisateurs du domaine d'exécuter des commandes sur des machines PowerShell distantes via WinRM.

Pour configurer WinRM sur l'hôte PowerShell, exécutez la commande suivante :
winrm quickconfig
winrm set winrm/config/service/auth '@{Kerberos="true"}'
winrm set winrm/config/winrs @{MaxMemoryPerShellMB="2048"}

Pour plus d'informations, reportez-vous à Configurer l'authentification Kerberos pour les plug-ins Automation Orchestrator.

Configurer WinRM pour utiliser le protocole HTTP

Vous pouvez configurer l'hôte WinRM pour permettre la communication avec le plug-in PowerShell via le protocole HTTP.

Pour modifier la configuration de WinRM, vous devez exécuter des commandes sur la machine hôte WinRM. Vous pouvez utiliser la même machine que le service et le client WinRM.

Important : Si vous ignorez l'une des étapes lors de la configuration de WinRM pour utiliser le protocole HTTP, l'hôte ne sera peut-être pas ajouté et un message d'erreur comme le suivant risque d'apparaître dans les journaux :
Caused by: org.dom4j.DocumentException: Error on line -1 of document : Premature end of file. 
Nested exception: Premature end of file.
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.DocumentHelper.parseText(DocumentHelper.java:278)
at com.xebialabs.overthere.cifs.winrm.connector.JdkHttpConnector.sendMessage(JdkHttpConnector.java:117)

Procédure

  1. Exécutez la commande suivante pour définir les valeurs de configuration de WinRM par défaut.
    c:\> winrm quickconfig
  2. (Facultatif) Exécutez la commande suivante pour vérifier si un écouteur est en cours d'exécution et vérifiez les ports par défaut.
    c:\> winrm e winrm/config/listener

    Les ports par défaut sont 5985 pour HTTP et 5986 pour HTTPS.

  3. Activez l'authentification de base sur le service WinRM.
    1. Exécutez la commande suivante pour vérifier si l'authentification de base est autorisée.
      c:\> winrm get winrm/config/service
    2. Exécutez la commande suivante pour activer l'authentification de base.
      c:\> winrm set winrm/config/service/auth '@{Basic="true"}'
  4. Exécutez la commande suivante pour autoriser le transfert de données non chiffrées sur le service WinRM.
    c:\> winrm set winrm/config/service @{AllowUnencrypted="true"}
  5. Si le niveau de sécurisation du jeton de liaison de canal au niveau du service WinRM est défini sur « strict » (strict), changez sa valeur en « relaxed » (souple).
    c:\> winrm set winrm/config/service/auth @{CbtHardeningLevel="relaxed"}
  6. Activez l'authentification de base sur le client WinRM.
    1. Exécutez la commande suivante pour vérifier si l'authentification de base est autorisée.
      c:\> winrm get winrm/config/client
    2. Exécutez la commande suivante pour activer l'authentification de base.
      c:\> winrm set winrm/config/client/auth @{Basic="true"}
  7. Exécutez la commande suivante pour autoriser le transfert de données non chiffrées sur le client WinRM.
    c:\> winrm set winrm/config/client @{AllowUnencrypted="true"}
  8. Si la machine hôte WinRM se trouve dans un domaine externe, exécutez la commande suivante pour spécifier les hôtes approuvés.
    c:\> winrm set winrm/config/client @{TrustedHosts="host1, host2, host3"}
  9. Exécutez la commande suivante pour tester la connexion au service WinRM.
    c:\> winrm identify -r:http://winrm_server:5985 -auth:basic -u:nom_utilisateur -p:mot_de_passe -encoding:utf-8

Configurer WinRM pour utiliser le protocole HTTPS

Vous pouvez configurer l'hôte WinRM pour permettre la communication avec le plug-in PowerShell via le protocole HTTPS.

Pour communiquer via le protocole HTTPS, l'hôte WinRM exige un certificat. Vous pouvez obtenir ce certificat ou en générer un.

Conditions préalables

  • Configurez WinRM pour utiliser le protocole HTTP. Pour plus d'informations, reportez-vous à la section Configurer WinRM pour utiliser le protocole HTTP.
  • Vérifiez que vous pouvez accéder à Microsoft Management Console (mmc.exe) sur l'hôte WinRM.

Procédure

  1. Générez un certificat autosigné.
    La ligne de commande suivante contient des exemples de syntaxes pour créer un certificat sur l'hôte WinRM à l'aide de l'applet de commande PowerShell New-SelfSignedCertificate.
    New-SelfSignedCertificate -CertStoreLocation cert:\localmachine\my -DnsName ("machinename.subdomain.company.com", "machinename") -NotAfter (get-date).AddYears(5) -Provider "Microsoft RSA SChannel Cryptographic Provider" -KeyLength 2048

    Dans cet exemple, le paramètre -NotAfter spécifie que le certificat expirera dans 5 ans. Si ce paramètre n'est pas spécifié, le certificat expire dans 1 an. En savoir plus sur la création de certificats auto-signés.

  2. Ajoutez le certificat généré à l'aide de Microsoft Management Console.
    1. Exécutez mmc.exe.
    2. Sélectionnez Fichier > Ajouter/Supprimer un composant logiciel enfichable.
    3. Dans la liste des composants logiciels enfichables disponibles, sélectionnez Certificats et cliquez sur Ajouter.
    4. Sélectionnez Compte ordinateur et cliquez sur Suivant.
    5. Cliquez sur Terminer.
    6. Vérifiez que le certificat est installé dans Racine de la console > Certificats (ordinateur local) > Personnel > Certificats et dans Racine de la console > Certificats (ordinateur local) > Autorités de certification racine de confiance > Certificats.
      Si le certificat n'est pas installé dans les dossiers Autorités de certification racine de confiance et Personnel, vous devez l'installer manuellement.
  3. Créez un écouteur HTTPS à l'aide de l'empreinte numérique et du nom d'hôte.
    La ligne de commande suivante contient des exemples de syntaxe pour créer un écouteur HTTPS.

    winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="nom_hôte";CertificateThumbprint="empreinte_numérique_certificat"}

    Note : Omettez les espaces dans l'empreinte numérique du certificat.

    Lorsque le certificat expire, l'écouteur doit être supprimé et recréé avec le nouveau certificat valide.

  4. Testez la connexion.
    La ligne de commande suivante contient des exemples de syntaxe pour tester la connexion.

    winrs -r:https://nom_hôte:numéro_port -u:nom_utilisateur -p:mot_de_passe hostname