PowerShell Remoting usando CredSSP está quebrado

3

Recentemente, o PowerShell funcionou perfeitamente com o CredSSP, mas agora, toda vez que tento estabelecer uma sessão de remoting usando o CredSSP, estou recebendo o seguinte erro:

Enter-PSSession : Connecting to remote server server01.contoso.com failed with the following error message : The WinRM client received an HTTP server error status (500), but the remote service did not include any other information about the cause of the failure. For more information, see the about_Remote_Troubleshooting Help topic. At line:1 char:1 + Enter-PSSession -ComputerName server01.contoso.com -Credential $cred -Authentication C ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (server01.contoso.com:String) [Enter-PSSession], PSRemotingTransportException + FullyQualifiedErrorId : CreateRemoteRunspaceFailed

Eu tentei redefinir o serviço winrm usando winrm invoke restore winrm/config

Eu tentei desativar o controle remoto do PowerShell, desabilitar o CredSSP (cliente e servidor), reativar o uso remoto do PowerShell, reativar o CredSSP, desabilitar GPOs relacionados à configuração do WinRM e à delegação de credenciais e nada funcionou. Existe alguma maneira de aprofundar isso para descobrir o que está acontecendo?

Isso está afetando todos os sistemas Windows Server 2012 em meu ambiente de laboratório, que obviamente estão executando o PowerShell v3.

No lado cliente , estou vendo isso no log de eventos Gerenciamento Remoto do Windows : WSMan operation CreateShell failed, error code 2150859120

Configurar servidor

  • Disable-PSRemoting -Force;
  • Disable-WsmanCredssp -Role Client;
  • Disable-WsmanCredssp -Role Server;
  • Enable-PSRemoting -Force;
  • Set-WSmanQuickConfig -UseSSL -Force;
  • Enable-WsmanCredSSP -Role Server -Force;

Configurar o cliente

  • Disable-PSRemoting -Force;
  • Disable-WsmanCredssp -Role Client;
  • Disable-WsmanCredssp -Role Server;
  • Enable-PSRemoting -Force;
  • Set-WSmanQuickConfig -UseSSL -Force;
  • Enable-WsmanCredssp -Role Client -DelegateComputer *.contoso.com -Force;

Depois de configurar o cliente e o servidor, execute:

$cred = Get-Credential;
Enter-PSSession -ComputerName server.contoso.com -Credential $cred -Authentication CredSSP;

Isso reproduz o erro de forma consistente.

    
por Trevor Sullivan 23.04.2013 / 04:51

1 resposta

1

Acho que encontrei o problema.

Eu estava originalmente com problemas com o ouvinte HTTPS. Eu queria usar um IP explícito, mas isso só está disponível ao usar o SSL. Configurando o ouvinte SSL com o seguinte:

Set-WSManQuickConfig -UseSSL -Force

ou

winrm quickconfig -transport:https -Force

configuraria o ouvinte no servidor, mas ainda falharia ao conectar-se a partir do cliente com o parâmetro -UseSSL .

Eu desisti dos IPs e voltei a usar nomes de máquinas. Deixei as tentativas de definir HTTPS no script, mas corri para os problemas que você estava tendo com as 500 respostas ao usar Credssp para autenticação.

Finalmente, decidi tentar uma coisa de cada vez. Assim que eu removi as configurações de HTTPS, as coisas funcionaram!

Meu script completo é assim:

# Disable/revoke winrm/remoting
Start-Service winrm
winrm invoke restore winrm/config

Disable-PSRemoting -Force
Disable-WSManCredSSP -Role Client
Disable-WSManCredSSP -Role Server
Stop-Service winrm

# Enable remoting
Enable-PSRemoting -Force
Enable-WSManCredSSP -Role Server -Force
Enable-WSManCredSSP -Role Client -DelegateComputer "*.mydomain.com" -Force
winrm enumerate winrm/config/listener

Set-Item WSMan:\localhost\Client\TrustedHosts "*.mydomain.com" -Force

Certamente não é o ideal, mas espero que ajude.

    
por 12.07.2013 / 11:23