A sessão remota do PS falha no servidor que não é de domínio

10

Estou tentando conectar-me a um servidor Win2008R2 remoto que não ingressou no domínio usando o PS de um host Win8 (mesma sub-rede, é uma VM local). Tentei tudo o 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 e o RDP funciona bem entre esses dois hosts com as mesmas credenciais.

Até isso funciona:

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

Respostas:

17

No lado do cliente

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

No lado do 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

Teste com

Test-WsMan ComputerName
Test-WsMan ComputerName -UseSSL

Editar: definir TrustedHosts com o PowerShell

Ou com o PowerShell (como administrador)

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

E verifique (não precisa de administrador para isso)

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

Seu problema, conforme encontrado em uma dessas mensagens de erro, é:

Se o esquema de autenticação for diferente do Kerberos, ou se o computador cliente não estiver associado a um domínio, o transporte HTTPS deverá ser usado ou a máquina de destino deverá ser adicionada à configuração de configuração TrustedHosts.

Basicamente, você precisa configurar o WinRM para usar HTTPS (em vez do HTTP padrão) ou adicionar a máquina da qual você está se conectando como Host Confiável na máquina à qual está se conectando.

HopelessN00b
fonte
Não posso usar esse comando, pois não há certificado válido no servidor. Como você vê na minha pergunta original, tentei adicionar a máquina aoshos confiáveis ​​no lado do cliente. Também preciso fazer o mesmo no lado do servidor?
Dendory
RDP no servidor remoto e defina os Hosts Confiáveis ​​da sua sessão RDP, se é assim que você deseja fazer isso. Eu acho que é mais fácil e muito melhor definir o WinRM / WinRS para usar HTTPS em vez de HTTP em todos os computadores que eu administro (por mais motivos do que apenas esse problema em particular), mas acho que essa é sua decisão.
HopelessN00b
Sim, mas o PS HTTPS aparentemente requer um certificado real (não autoassinado) junto com um nome DNS público. Por que ele não usa a mesma criptografia que o RDP? Não precisa de nada de especial para isso. Esta é uma VM local para desenvolvimento e, portanto, não há escolha, não pode obter uma CA pública para ela.
Dendory
winrm set winrm/config/client '@{TrustedHosts="10.10.106.1"}'funcionou no servidor, mas ainda recebo as mesmas mensagens de erro no meu cliente, ele ainda não se conecta.
Dendory
1
O @Dendory WinRM sobre HTTPS funciona bem com um certificado emitido por uma autoridade de certificação interna, desde que você tenha a máquina configurada corretamente para confiar na CA de emissão. Ele não exige que a máquina tenha um nome DNS externo válido, apenas que você use seu nome DNS e que o certificado também. Se isso não for uma opção, por qualquer motivo, você terá que esperar que outra pessoa apareça para ajudá-lo a trabalhar com apenas a entrada Hosts Confiáveis ​​(entradas?) - simplesmente não faço dessa maneira, porque é muito chato, e não parecia funcionar de maneira confiável para mim.
HopelessN00b
1

Meu problema foi em uma instância hospedada na AWS.

  • Eu tive que abrir o 5985 no grupo de segurança da instância
  • Eu tive que modificar a regra do firewall para permitir 5985 para todos os perfis e qualquer endereço remoto

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

Eu resolvi isso quando executei o test-wsman:

"Por padrão, a exceção do firewall do WinRM para perfis públicos limita o acesso a computadores remotos na mesma sub-rede local."

avvi
fonte
0

Finalmente consegui que o meu funcionasse ... onde xxx.xxx.xxx.xxx é o endereço 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
fonte
0

Após meses desse problema, para mim, era necessário adicionar o IP do servidor remoto e o nome DNS aos hosts confiáveis. Apenas adicionar o IP não foi suficiente!

Rachel Nichols
fonte