Die Remote-PS-Sitzung schlägt auf einem Nicht-Domänenserver fehl

10

Ich versuche, über PS von einem Win8-Host (dasselbe Subnetz, es ist eine lokale VM) eine Verbindung zu einem nicht domänenverbundenen Remote-Win2008R2-Server herzustellen. Versuchte alles, was ich finden konnte, nichts funktioniert.

SERVER:

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

KLIENT:

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, und RDP funktioniert einwandfrei zwischen diesen beiden Hosts mit denselben Anmeldeinformationen.

Auch das funktioniert:

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

Antworten:

17

Auf der Client-Seite

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

Auf der Serverseite

Enable-PSRemoting -Force
winrm quickconfig

für https

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

für http

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

Test mit

Test-WsMan ComputerName
Test-WsMan ComputerName -UseSSL

Bearbeiten: Legen Sie TrustedHosts mit PowerShell fest

Oder mit PowerShell (als Admin)

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

Und überprüfen Sie (brauchen Sie keinen Admin dafür)

Get-Item WSMan:\localhost\Client\TrustedHosts
dhcgn
quelle
5

Ihr Problem, wie in einer dieser Fehlermeldungen zu finden, ist:

Wenn sich das Authentifizierungsschema von Kerberos unterscheidet oder wenn der Clientcomputer keiner Domäne angeschlossen ist, muss der HTTPS-Transport verwendet oder der Zielcomputer zur Konfigurationseinstellung von TrustedHosts hinzugefügt werden.

Grundsätzlich müssen Sie entweder WinRM so einstellen, dass HTTPS (anstelle des Standard-HTTP) verwendet wird, oder den Computer, von dem aus Sie eine Verbindung herstellen, als vertrauenswürdigen Host auf dem Computer hinzufügen, zu dem Sie eine Verbindung herstellen.

HopelessN00b
quelle
Ich kann diesen Befehl nicht verwenden, da auf dem Server kein gültiges Zertifikat vorhanden ist. Wie Sie in meiner ursprünglichen Frage sehen, habe ich versucht, den Computer den vertrauenswürdigen Hosts auf der Clientseite hinzuzufügen. Muss ich das auch auf der Serverseite tun?
Dendory
RDP auf dem Remote-Server und legen Sie die vertrauenswürdigen Hosts in Ihrer RDP-Sitzung fest, wenn Sie dies auf diese Weise tun möchten. Ich denke, es ist einfacher und viel besser, WinRM / WinRS so einzustellen, dass HTTPS anstelle von HTTP auf allen von mir verwalteten Computern verwendet wird (aus mehr Gründen als nur diesem speziellen Problem), aber ich denke, das ist Ihr Anruf.
HopelessN00b
Ja, aber PS HTTPS erfordert anscheinend ein echtes Zertifikat (nicht selbstsigniert) zusammen mit einem öffentlichen DNS-Namen. Warum wird nicht dieselbe Verschlüsselung wie bei RDP verwendet? Brauche nichts Besonderes dafür. Dies ist eine lokale VM für die Entwicklung und kann daher keine öffentliche Zertifizierungsstelle dafür erhalten.
Dendory
winrm set winrm/config/client '@{TrustedHosts="10.10.106.1"}'hat auf dem Server funktioniert, aber ich erhalte immer noch die gleichen Fehlermeldungen auf meinem Client, es wird immer noch keine Verbindung hergestellt.
Dendory
1
@Dendory WinRM über HTTPS funktioniert einwandfrei mit einem Zertifikat, das von einer internen Zertifizierungsstelle ausgestellt wurde, vorausgesetzt, Sie haben den Computer ordnungsgemäß eingerichtet, um der ausstellenden Zertifizierungsstelle zu vertrauen. Der Computer muss keinen gültigen externen DNS-Namen haben, nur dass Sie seinen DNS-Namen verwenden und das Zertifikat auch. Wenn dies aus irgendeinem Grund keine Option ist, müssen Sie hoffen, dass jemand anderes hinzukommt, der Ihnen dabei helfen kann, es nur mit dem Eintrag "Vertrauenswürdige Hosts" (Einträge?) Zum Laufen zu bringen - ich mache es einfach nicht so, weil Es ist zu schmerzhaft und schien für mich nicht zuverlässig zu funktionieren.
HopelessN00b
1

Mein Problem betraf eine in AWS gehostete Instanz.

  • Ich musste 5985 für die Instanzsicherheitsgruppe öffnen
  • Ich musste die Firewall-Regel ändern, um 5985 für alle Profile und jede Remote-Adresse zuzulassen

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

Ich habe das herausgefunden, als ich test-wsman ausgeführt habe:

"Standardmäßig beschränkt die WinRM-Firewall-Ausnahme für öffentliche Profile den Zugriff auf Remotecomputer im selben lokalen Subnetz."

avvi
quelle
0

Ich habe meine endlich zum Laufen gebracht ... wobei xxx.xxx.xxx.xxx die IP-Adresse ist.

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>
Jimdenver
quelle
0

Nach Monaten dieses Problems stellte sich für mich heraus, dass ich den vertrauenswürdigen Hosts sowohl die IP des Remote-Servers als auch den DNS-Namen hinzufügen musste. Nur die IP hinzuzufügen war nicht ausreichend!

Rachel Nichols
quelle