如何在Cygwin中为Ansible命令传递ssh-common-args参数
解决Ansible SSH主机密钥类型不匹配问题
问题原因
你遇到的错误是因为目标服务器仅支持ssh-rsa密钥类型,而当前SSH客户端默认禁用了该类型,导致密钥协商失败。手动SSH命令通过添加-o HostKeyAlgorithms=+ssh-rsa和-o PubkeyAcceptedKeyTypes=+ssh-rsa参数解决了问题,但你的Ansible命令错误地在--ssh-common-args中包含了user1@server——这个参数仅用于传递SSH的配置选项,用户和目标地址由Ansible的--user参数或inventory配置自动处理,不需要在这里重复指定。
正确的Ansible命令
移除--ssh-common-args里的user1@server,仅保留SSH选项参数即可:
ansible-playbook -i '/cygdrive/c/Test/repository/inventory/envk' -e configure_ldap test.yaml -k -K --ssh-common-args='-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa' --user user1
持久化配置方案(无需每次加参数)
如果不想每次运行Ansible都手动添加参数,可以通过以下两种方式配置:
方式1:修改Ansible配置文件
在项目目录的ansible.cfg或用户根目录的~/.ansible.cfg中添加:
[ssh_connection] ssh_args = -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa
方式2:修改SSH客户端配置
在Cygwin用户目录的~/.ssh/config中添加目标服务器的专属配置:
Host server HostName server User user1 HostKeyAlgorithms +ssh-rsa PubkeyAcceptedKeyTypes +ssh-rsa
若需适配多台服务器,可替换Host server为Host *来匹配所有主机。
内容的提问来源于stack exchange,提问作者Anitha M
相关产品推荐
相关产品推荐

