对Windows服务器运行Ansible脚本时,收到以下错误消息。
credssp: The server did not respond with pubKeyAuth info auth was rejected
原因是什么。
答案 0 :(得分:0)
我正在为自己回答这个问题,因为解决方案很难实现,但需要一些时间来解决。
我正在使用以下用户数据创建新的EC2实例,该用户数据根据http://docs.ansible.com/ansible/latest/intro_windows.html处的文档准备系统,并设置管理员密码。
<powershell>
Enable-WSManCredSSP -Role Server -Force
Set-Item -Path "WSMan:\localhost\Service\Auth\CredSSP" -Value $true
Invoke-Expression ((New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1'))
$user=[adsi]"WinNT://localhost/Administrator,user"
$user.SetPassword("{{win_initial_password}}")
$user.SetInfo()
</powershell>
我的Ansible脚本在继续之前等待端口5986(WinRM)上的响应,假设一旦此端口响应该实例就可以访问。
我认为发生的事情是端口5986响应时没有设置管理员密码。
要解决此问题,我将管理员凭据设置为userdata脚本中的第一步,并添加了一个暂停以便进行测量。
<powershell>
$user=[adsi]"WinNT://localhost/Administrator,user"
$user.SetPassword("{{win_initial_password}}")
$user.SetInfo()
Enable-WSManCredSSP -Role Server -Force
Set-Item -Path "WSMan:\localhost\Service\Auth\CredSSP" -Value $true
Invoke-Expression ((New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1'))
</powershell>
完成这两项更改后,我的脚本按预期工作。因此,如果您收到该错误消息,请检查用户名和密码是否有效。