You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible调用authorized_key模块推送SSH密钥报需sshpass错误

问题根因

报错发生在**Gathering Facts(事实收集)**阶段,此时Ansible尚未和远程主机建立SSH连接,根本没有执行到公钥拷贝的任务逻辑,因此修改playbook里的key参数(不管是写本地公钥路径还是GitHub公钥地址)都无法解决该报错。
核心触发原因:Ansible使用密码方式做SSH认证时,必须依赖sshpass工具完成非交互式密码传递,你当前使用的Mac设备本地未安装该工具,导致连接流程直接中断。

解决方法

1. 在Mac本地安装sshpass

Mac默认的Homebrew官方源未直接收录sshpass(协议兼容原因),通过第三方源安装即可:

brew install hudochenkov/sshpass/sshpass

安装完成后执行以下命令验证,能正常输出版本信息即安装成功:

sshpass -V

2. 重新执行playbook

回到ansible工作目录,重新执行原下发命令,按提示输入远程主机的SSH密码即可正常运行:

ansible-playbook -i inventory.yaml ssh.yaml --ask-pass
补充说明
  • 如果执行时出现主机密钥校验失败的报错,在命令中追加参数跳过首次连接的指纹确认即可:
    ansible-playbook -i inventory.yaml ssh.yaml --ask-pass --ssh-common-args='-o StrictHostKeyChecking=no'
    
  • 将key参数配置为GitHub公钥地址的写法本身是有效的,ansible.posix.authorized_key模块支持直接拉取远程公钥链接的内容,但该逻辑是在本地控制端执行的,和远程SSH连接阶段的报错没有关联。
  • 公钥成功下发到远程主机后,后续执行Ansible任务无需再加--ask-pass参数,直接走SSH密钥认证即可。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 10:06:20