使用CredSSP的PowerShell Remoting已损坏


3

我最近让PowerShell与CredSSP完美配合,但现在每次我尝试使用CredSSP建立远程会话时,我都会收到以下错误:

Enter-PSSession:连接到远程服务器server01.contoso.com失败,并显示以下错误消息:WinRM客户端收到HTTP服务器错误状态(500),但远程服务未包含有关失败原因的任何其他信息。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。在行:1 char:1 + Enter-PSSession -ComputerName server01.contoso.com -Credential $ cred -Authentication C ... + ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~ + CategoryInfo:InvalidArgument:(server01.contoso.com:String)[Enter-PSSession],PSRemotingTransportException + FullyQualifiedErrorId:CreateRemoteRunspaceFailed

我尝试过使用重置winrm服务 winrm invoke restore winrm/config

我已经尝试禁用PowerShell远程处理,禁用CredSSP(客户端和服务器),重新启用PowerShell远程处理,重新启用CredSSP,禁用与配置WinRM和凭据委派相关的任何GPO,并且没有任何工作。有没有办法进一步深入研究这是怎么回事?

这影响了我实验室环境中的所有Windows Server 2012系统,这些系统显然正在运行PowerShell v3。

客户端,我在Windows远程管理事件日志中看到了这一点:WSMan operation CreateShell failed, error code 2150859120

配置服务器

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

配置客户端

  • 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;

配置客户端和服务器后,运行:

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

这一致地再现了错误。

Answers:


1

我想我可能已经找到了这个问题。

我最初遇到了HTTPS监听器的问题。我想使用显式IP但这仅在使用SSL时可用。使用以下内容设置SSL侦听器:

Set-WSManQuickConfig -UseSSL -Force

要么

winrm quickconfig -transport:https -Force

将在服务器上配置监听器,但在从客户端连接-UseSSL参数时仍然会失败。

我放弃了IP并返回使用机器名称。我离开了尝试在脚本中设置HTTPS但在使用Credssp身份验证时遇到了500响应的问题。

最后,我决定一次尝试一件事。一旦我删除了HTTPS设置,事情就有效了!

我的完整脚本如下所示:

# 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

这当然不理想,但我希望它有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.