服务器 A 是 Server 2008 R2、Powershell V3 启用所有 SSL 和 TLS 以及所有密码。服务器 B 是 Server 2016、Powershell V5 和仅 TlS 1.2 和特定的密码集。
我无法让 Credssp 身份验证从 A 工作到 B,即使我使用
Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
我知道这是每个会话设置,所以我包含在脚本本身中。
如果我将服务器 B (Server 2016) 设置为打开所有 SSL 和 TLS 加密,则 CREDSSP 工作没有问题。
是的,我需要使用 CREDSSP,因为服务器 B 上的脚本引用了服务器 A 上的文件共享。
这是我正在使用的脚本,它再次在启用所有版本的 TLS 时工作。
$pass = ConvertTo-SecureString "password" -asplaintext -force
$mycred = new-object -typename System.Management.Automation.PSCredential -argumentlist "domain\user.service",$pass
#
#
# The Remote Execution Command. Fully Qualified Domain name is critical since we are using Credssp.
# Credssp is being used to resolve an issue with a double hop authentication issue.
Invoke-Command -ComputerName ServerB.domain.edu -command { C:\HelloWorld.ps1 } -Authentication Credssp -Credential $mycred
我还没有尝试过但我会尝试的一件事是将服务器 A 和 B 都放在 TLS 1.2 上,看看它是否可以这样工作。这不是一个长期的解决方案,因为此时不能将服务器 A 设置为仅 TLS 1.2。