Ansible执行任务时出现PubkeyAcceptedAlgorithms配置错误,非目标主机SSH配置引发问题求助
问题原因分析
你碰到的这个问题核心是Docker容器内的OpenSSH版本和主机的OpenSSH版本不兼容:
- 你的Ubuntu 22.04主机用的是较新的OpenSSH版本(8.9p1左右),支持
PubkeyAcceptedAlgorithms和HostkeyAlgorithms这两个新配置项; - 但运行Ansible的Docker镜像里装的是旧版本OpenSSH(比如7.x或8.4以下),这些旧版本根本不认识这两个新配置项。
关键细节:SSH客户端读取~/.ssh/config时,会先解析整个文件的所有配置项——不管你当前连接的是哪个Host,只要文件里有它不认识的选项,就会直接报错终止连接。这就是为什么针对其他主机的配置,会影响到192.168.1.42的Ansible任务执行。
解决方案
最稳妥的修复方式是修改你的~/.ssh/config,把新配置项换成旧版本OpenSSH也支持的兼容写法:
将原来的配置片段:
PubkeyAcceptedAlgorithms +ssh-rsa HostkeyAlgorithms +ssh-rsa
替换为:
PubkeyAcceptedKeyTypes +ssh-rsa HostKeyAlgorithms +ssh-rsa
这种写法的优势是双向兼容:
- 主机上的新OpenSSH版本完全识别该配置;
- Docker容器里的旧OpenSSH版本也能正常解析,不会再触发报错。
验证步骤
- 修改完配置后,先在主机上手动测试连接192.168.1.42,确保SSH连接正常;
- 重新运行Ansible任务,应该就能成功连接目标主机了。
如果问题仍存在,你可以进入Docker容器确认OpenSSH版本,排查是否是版本兼容问题:
# 替换为你的Ansible容器名称/ID,进入容器 docker exec -it <ansible-container-name> bash # 查看SSH版本 ssh -V
内容的提问来源于stack exchange,提问作者sineverba
相关产品推荐
相关产品推荐

