Linux通过WinRM连接Windows遇SSL协议不支持错误求调试方案
解决WinRM SSL协议不兼容问题的调试步骤
1. 检查Windows端SSL/TLS配置
- 用管理员权限打开Windows PowerShell,执行以下命令查看WinRM及系统级的SSL支持情况:
重点确认是否启用了TLS 1.2或TLS 1.3,老版本的SSL/TLS(如SSL3、TLS1.0/1.1)现在基本被主流系统禁用。Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WSMAN\WinRMConfig\WinRS' Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols'
2. 测试Linux与Windows的SSL协议兼容性
- 在Linux终端用OpenSSL直接测试不同协议版本的连接:
哪个命令能成功建立连接,就说明两端兼容该版本的SSL协议。# 测试TLS 1.2 openssl s_client -connect x.x.x.x:5986 -tls1_2 # 测试TLS 1.3 openssl s_client -connect x.x.x.x:5986 -tls1_3
3. 强制WinRM会话使用兼容的SSL版本
- 在Linux的PowerShell中修改会话选项,指定使用刚才测通的协议版本:
若TLS1.3测试通过,可将# 示例:指定强制使用TLS1.2 $so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck -SslProtocol Tls12 # 重新执行连接命令 New-PSSession -ComputerName x.x.x.x -Credential $credential -UseSSL -SessionOption $so -Authentication BasicSslProtocol的值改为Tls13再次尝试。
4. 检查Windows端WinRM的证书配置
- 确认WinRM绑定的证书是否有效:
找到输出中的winrm enumerate winrm/config/listenerCertificateThumbprint,打开Windows证书管理器,检查该证书的有效性及支持的SSL/TLS版本。
5. 调整Linux端PowerShell的SSL环境
- 可临时设置环境变量指定SSL协议,再启动PowerShell尝试连接:
同时检查PowerShell配置文件(如export SSL_CIPHERS='TLSv1.2' pwsh~/.config/powershell/profile.ps1)中是否有禁用特定SSL协议的设置。
内容的提问来源于stack exchange,提问作者Mr. Annonymous
相关产品推荐
相关产品推荐

