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

Ansible通过SSH连接主机失败(报错unknown key)求助

Ansible通过SSH连接主机失败(报错unknown key)求助

我之前也碰到过类似的SSH连接报错,给你梳理下可能的原因和解决办法:

首先先确认下你遇到的完整报错信息是这样的对吧:

UNREACHABLE! => {
  "changed": false,
  "msg": "Failed to connect to the host via ssh: vdollar_percent_expand: unknown key %t\r\npercent_expand failed",
  "unreachable": true
}

这个报错的核心问题是SSH在解析配置时遇到了不支持的%t扩展变量。%t是OpenSSH较新版本才引入的变量(用来表示当前时间),如果你的目标主机SSH服务版本偏旧,或者SSH配置文件里误用了这个变量,就会触发这个“unknown key”的错误。

接下来可以按这几步排查解决:

  • 先去目标主机上检查SSH服务的配置文件/etc/ssh/sshd_config,搜一搜有没有包含%t的配置项(比如Banner、PrintMotd这类字段里经常会用到变量)。要是找到了,要么换成当前SSH版本支持的变量(比如%h代表主机名、%u代表用户名),要么直接把%t这部分删掉就行。
  • 修改完配置后,记得重启目标主机的SSH服务才能生效:用systemd的话就执行sudo systemctl restart sshd,老系统用SysVinit的话就跑sudo service ssh restart。
  • 如果改了目标主机配置还是不行,再检查本地的SSH客户端配置文件(~/.ssh/config或者系统级的/etc/ssh/ssh_config),看看有没有针对这个目标主机的配置里用到了%t,同样做修改就好。
  • 另外可以先手动用SSH连一下目标主机试试:ssh 你的用户名@目标主机IP,如果手动连也报同样的错,那肯定是SSH配置的问题;要是手动连正常,那可以试试升级Ansible或者本地的SSH客户端版本,或者在Ansible的inventory里加个ansible_ssh_extra_args="-o StrictHostKeyChecking=no"这类参数来规避配置冲突。

备注:内容来源于stack exchange,提问作者陈青海

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 13:23:05