La sesión remota de PS falla en un servidor que no es de dominio

10

Estoy tratando de conectarme a un servidor Win2008R2 remoto no unido a un dominio usando PS desde un host Win8 (misma subred, es una VM local). Intenté todo lo que pude encontrar, nada funciona.

SERVIDOR:

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

CLIENTE:

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

Ah, y RDP funciona bien entre esos dos hosts con las mismas credenciales.

Incluso esto funciona:

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

Respuestas:

17

Del lado del cliente

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

En el lado del servidor

Enable-PSRemoting -Force
winrm quickconfig

para https

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

para http

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

Prueba con

Test-WsMan ComputerName
Test-WsMan ComputerName -UseSSL

Editar: establecer TrustedHosts con PowerShell

O con PowerShell (como administrador)

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

Y verifique (no necesita administrador para eso)

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

Su problema, como se encuentra en uno de esos mensajes de error es:

Si el esquema de autenticación es diferente de Kerberos, o si la computadora cliente no está unida a un dominio, entonces se debe usar el transporte HTTPS o se debe agregar la máquina de destino a la configuración de configuración TrustedHosts.

Básicamente, debe configurar WinRM para usar HTTPS (en lugar del HTTP predeterminado) o agregar la máquina desde la que se está conectando como Host de confianza en la máquina a la que se está conectando.

HopelessN00b
fuente
No puedo usar ese comando ya que no hay un certificado válido en el servidor. Como puede ver en mi pregunta original, intenté agregar la máquina a los hosts de confianza en el lado del cliente. ¿Necesito hacer lo mismo también en el lado del servidor?
Dendory
RDP en el servidor remoto y configure los hosts de confianza desde su sesión RDP, si esa es la forma en que desea hacerlo. Creo que es más fácil y mucho mejor configurar WinRM / WinRS para usar HTTPS en lugar de HTTP en todas las computadoras que administro (por más razones que solo este problema en particular), pero supongo que es su decisión.
HopelessN00b
Sí, pero PS HTTPS aparentemente requiere un certificado real (no autofirmado) junto con un nombre DNS público. ¿Por qué no usa el mismo cifrado que RDP? No necesito nada especial para ello. Esta es una máquina virtual local para el desarrollo y, por lo tanto, no hay opción, no puede obtener una CA pública para ella.
Dendory
winrm set winrm/config/client '@{TrustedHosts="10.10.106.1"}'funcionó en el servidor, pero sigo recibiendo los mismos mensajes de error en mi cliente, todavía no se conecta.
Dendory
1
@Dendory WinRM sobre HTTPS funciona bien con un certificado emitido por una autoridad de certificación interna, siempre que tenga la máquina configurada correctamente para confiar en la CA emisora. No requiere que la máquina tenga un nombre DNS externo válido, solo que use su nombre DNS y que el certificado también lo haga. Si esa no es una opción, por cualquier razón, tendrá que esperar que alguien más lo acompañe y pueda ayudarlo a que funcione solo con la entrada de Trusted Hosts (entradas). Simplemente no lo hago de esa manera, porque es demasiado doloroso en el culo, y no pareció funcionar de manera confiable para mí.
HopelessN00b
1

Mi problema fue para una instancia alojada en AWS.

  • Tuve que abrir 5985 en el grupo de seguridad de instancia
  • Tuve que modificar la regla del firewall para permitir 5985 para todos los perfiles y cualquier dirección remota

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

Resolví esto cuando ejecuté test-wsman:

"De manera predeterminada, la excepción de firewall WinRM para perfiles públicos limita el acceso a computadoras remotas dentro de la misma subred local".

avvi
fuente
0

Finalmente conseguí que el mío funcionara ... donde xxx.xxx.xxx.xxx es la dirección 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>
jimdenver
fuente
0

Después de meses de este problema, resultó que necesitaba agregar tanto la IP del servidor remoto como su nombre DNS a los hosts de confianza. ¡Solo agregar la IP no fue suficiente!

Rachel Nichols
fuente