从CentOS 7迁移至RHEL 9后PowerShell远程认证失败求助
解决RHEL9上PowerShell远程会话SPNEGO协商失败的问题
背景
在CentOS 7中,安装gssntlmssp包后,以下PowerShell脚本可正常建立远程会话:
$session = New-PSSession -ComputerName $computerName -Credential $credential -Authentication Negotiate
迁移至RHEL 9后,因官方移除gssntlmssp包,运行同一脚本时出现错误:
New-PSSession: [XXX.XXX.XXX.XXX] Connecting to remote server XXX.XXX.XXX.XXX failed with the following error message : acquiring creds with username only failed No credentials were supplied, or the credentials were unavailable or inaccessible SPNEGO cannot find mechanisms to negotiate For more information, see the about_Remote_Troubleshooting Help topic
解决方案
1. 通过EPEL源安装gssntlmssp(最直接替代)
RHEL 9官方仓库移除了该包,但可通过EPEL源获取:
- 安装EPEL源:
sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm - 安装
gssntlmssp:sudo dnf install gssntlmssp - 重新打开终端或重启PowerShell服务后,再次执行原脚本即可。
2. 切换至Kerberos认证(环境支持时优先)
如果目标主机/域环境支持Kerberos,可直接修改认证方式,无需依赖NTLM组件:
- 确保RHEL 9主机已加入域(通过
realm join或SSSD配置完成域集成) - 修改脚本的认证参数:
$session = New-PSSession -ComputerName $computerName -Credential $credential -Authentication Kerberos
3. 配置SSSD提供NTLM支持(无EPEL源时可选)
通过SSSD内置的NTLM模块替代gssntlmssp:
- 安装SSSD相关组件:
sudo dnf install sssd sssd-ntlm - 编辑
/etc/sssd/sssd.conf,添加或更新域配置段(以AD域为例):[domain/default] id_provider = ad auth_provider = ad access_provider = ad ntlm_auth = True - 重启SSSD服务:
sudo systemctl restart sssd - 执行原PowerShell脚本测试连接。
验证
运行以下命令确认NTLM机制已加载:
gssapi-mechanisms
输出中需包含NTLM相关条目。
内容的提问来源于stack exchange,提问作者Daniele Grillo
相关产品推荐
相关产品推荐

