La session PS distante échoue sur un serveur hors domaine


10

J'essaie de me connecter à un serveur Win2008R2 distant non joint à un domaine en utilisant PS à partir d'un hôte Win8 (même sous-réseau, c'est une machine virtuelle locale). J'ai tout essayé, rien ne fonctionne.

SERVEUR:

PS C:\Users\Administrator> winrm quickconfig
PS C:\Users\Administrator> enable-psremoting

CLIENT:

PS C:\scripts> $cred = get-credential -username "administrator" -message "Enter password"

PS C:\scripts> $sess = new-pssession -computername 10.10.106.2 -credential $cred -authentication default
new-pssession : [10.10.106.2] Connecting to remote server 10.10.106.2 failed with the following error message : The
WinRM client cannot process the request. If the authentication scheme is different from Kerberos, or if the client
computer is not joined to a domain, then HTTPS transport must be used or the destination machine must be added to the
TrustedHosts configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the TrustedHosts
list might not be authenticated. You can get more information about that by running the following command: winrm help
config. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:9
  + $sess = new-pssession -computername 10.10.106.2 -credential $cred -authenticatio ...
  + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
    + FullyQualifiedErrorId : ServerNotTrusted,PSSessionOpenFailed

PS C:\scripts> winrm set winrm/config/client '@{TrustedHosts="10.10.106.2"}'
WSManFault
Message = The client cannot connect to the destination specified in the request. Verify that the service on the dest
ination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running o
n the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the
destination to analyze and configure the WinRM service: "winrm quickconfig".
Error number:  -2144108526 0x80338012
The client cannot connect to the destination specified in the request. Verify that the service on the destination is run
ning and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destinat
ion, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination t
o analyze and configure the WinRM service: "winrm quickconfig".

PS C:\scripts> $sess = new-pssession -computername 10.10.106.2 -credential $cred -usessl
new-pssession : [10.10.106.2] Connecting to remote server 10.10.106.2 failed with the following error message : WinRM
cannot complete the operation. Verify that the specified computer name is valid, that the computer is accessible over
the network, and that a firewall exception for the WinRM service is enabled and allows access from this computer. By
default, the WinRM firewall exception for public profiles limits access to remote computers within the same local
subnet. For more information, see the about_Remote_Troubleshooting Help topic.
At line:1 char:9
  + $sess = new-pssession -computername 10.10.106.2 -credential $cred -usessl
  +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotin   gTransportException
    + FullyQualifiedErrorId : WinRMOperationTimeout,PSSessionOpenFailed

Oh et RDP fonctionne bien entre ces deux hôtes avec les mêmes informations d'identification.

Même cela fonctionne:

PS C:\scripts> Get-WinEvent -computername 10.10.106.2 -credential $cred

Réponses:


17

Côté client

winrm quickconfig
winrm set winrm/config/client '@{TrustedHosts="Computer1,Computer2"}'

Côté serveur

Enable-PSRemoting -Force
winrm quickconfig

pour https

winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="_";CertificateThumbprint="_"}

pour http

winrm create winrm/config/Listener?Address=*+Transport=HTTP

Testez avec

Test-WsMan ComputerName
Test-WsMan ComputerName -UseSSL

Modifier: définir TrustedHosts avec PowerShell

Ou avec PowerShell (en tant qu'administrateur)

Set-Item -Path WSMan:\localhost\Client\TrustedHosts -Value "Computer1,Computer2"

Et vérifiez (pas besoin d'Admin pour ça)

Get-Item WSMan:\localhost\Client\TrustedHosts

5

Votre problème, tel que trouvé dans l'un de ces messages d'erreur, est:

Si le schéma d'authentification est différent de Kerberos, ou si l'ordinateur client n'est pas joint à un domaine, le transport HTTPS doit être utilisé ou la machine de destination doit être ajoutée au paramètre de configuration TrustedHosts.

Fondamentalement, vous devez soit configurer WinRM pour utiliser HTTPS (plutôt que HTTP par défaut), soit ajouter la machine à partir de laquelle vous vous connectez en tant qu'hôte de confiance sur la machine à laquelle vous vous connectez.


Je ne peux pas utiliser cette commande car il n'y a pas de certificat valide sur le serveur. Comme vous le voyez dans ma question d'origine, j'ai essayé d'ajouter la machine aux hôtes de confiance côté client. Dois-je également faire de même côté serveur?
Dendory

RDP dans le serveur distant et définissez les hôtes de confiance à partir de votre session RDP, si c'est la façon dont vous souhaitez procéder. Je pense qu'il est plus facile et beaucoup mieux de simplement configurer WinRM / WinRS pour utiliser HTTPS au lieu de HTTP sur tous les ordinateurs que je gère (pour plus de raisons que ce problème particulier), mais je suppose que c'est votre appel.
HopelessN00b

Oui, mais PS HTTPS nécessite apparemment un vrai certificat (non auto-signé) avec un nom DNS public. Pourquoi n'utilise-t-il pas le même cryptage que RDP? Je n'ai besoin de rien de spécial pour ça. Il s'agit d'une machine virtuelle locale pour le développement et, par conséquent, aucun choix, ne peut pas obtenir une autorité de certification publique pour cela.
Dendory du

winrm set winrm/config/client '@{TrustedHosts="10.10.106.1"}'travaillé sur le serveur, mais je reçois toujours les mêmes messages d'erreur sur mon client, il ne se connectera toujours pas.
Dendory

1
@Dendory WinRM sur HTTPS fonctionne très bien avec un certificat émis par une autorité de certification interne, à condition que la machine soit correctement configurée pour approuver l'autorité de certification émettrice. Il ne nécessite pas que la machine ait un nom DNS externe valide, juste que vous utilisez son nom DNS et que le certificat le fait également. Si ce n'est pas une option, pour quelque raison que ce soit, vous devrez espérer que quelqu'un d'autre puisse vous aider à le faire fonctionner avec uniquement l'entrée Hôtes de confiance (entrées?) - Je ne le fais pas comme ça, car c'est trop une douleur dans le cul, et ne semble pas fonctionner de manière fiable pour moi.
HopelessN00b

1

Mon problème concernait une instance hébergée dans AWS.

  • J'ai dû ouvrir 5985 sur le groupe de sécurité d'instance
  • J'ai dû modifier la règle de pare-feu pour autoriser 5985 pour tous les profils et toutes les adresses distantes

    New-NetFirewallRule -Name PsRemotingHttp -Direction Inbound -Action Allow -Protocol tcp -LocalPort 5985 -DisplayName PsRemotingHttp

J'ai travaillé cela lorsque j'ai exécuté test-wsman:

"Par défaut, l'exception de pare-feu WinRM pour les profils publics limite l'accès aux ordinateurs distants au sein du même sous-réseau local."


0

J'ai enfin fait travailler le mien ... où xxx.xxx.xxx.xxx est l'adresse IP.

PS C:\Users\Administrator> winrm quickconfig
WinRM service is already running on this machine.
WinRM is already set up for remote management on this computer.
PS C:\Users\Administrator> Enable-PSRemoting -Force
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.
PS C:\Users\Administrator> winrm set winrm/config/client '@{TrustedHosts="xxx.xxx.xxx.xxx"}'
Client
    NetworkDelayms = 5000
    URLPrefix = wsman
    AllowUnencrypted = false
    Auth
        Basic = true
        Digest = true
        Kerberos = true
        Negotiate = true
        Certificate = true
        CredSSP = false
    DefaultPorts
        HTTP = 5985
        HTTPS = 5986
    TrustedHosts = xxx.xxx.xxx.xxx

PS C:\Users\Administrator> Enter-PSSession  -ComputerName xxx.xxx.xxx.xxx -Credential "~\Administrator"
[xxx.xxx.xxx.xxx]: PS C:\Users\Administrator\Documents>

0

Après des mois de ce problème, pour moi, il s'est avéré que je devais ajouter à la fois l'IP du serveur distant et son nom DNS aux hôtes de confiance. Ajouter simplement l'IP n'était pas suffisant!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.