Datadog SSH集成报错localhost未在known_hosts中如何解决
问题描述
参考Datadog SSH集成官方文档部署配置时,出现如下报错信息:
Datadog’s ssh_check integration is reporting: Instance #ssh_check:fbecff0ac9464f00[ERROR]: [{"message": "Server 'localhost' not found in known_hosts", "traceback": "Traceback (most recent call last): File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/base/checks/base.py\", line 841, in run self.check(instance) File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/datadog_checks/ssh_check/ssh_check.py\", line 67, in check client.connect( File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/paramiko/client.py\", line 415, in connect self._policy.missing_host_key( File \"/opt/datadog-agent/embedded/lib/python3.8/site-packages/paramiko/client.py\", line 823, in missing_host_key raise SSHException( paramiko.ssh_exception.SSHException: Server 'localhost' not found in known_hosts "}]
针对报错 Server 'localhost' not found in known_hosts,已执行ssh myusername@localhost命令,成功将localhost添加到当前用户的known_hosts主机列表,但相同报错仍反复出现。
使用场景:需要为AWS EC2实例配置Datadog SSH检查能力,实现服务器SSH服务异常时触发告警。
问题根因
手动执行ssh命令添加的主机密钥,默认保存在当前操作用户家目录的~/.ssh/known_hosts文件中。Datadog Agent服务默认以独立的专用用户运行(旧版本为dd-agent,7.x+新版本为datadog-agent),运行时只会读取自身专用用户家目录下的known_hosts文件,无法读取你当前登录用户添加的主机密钥记录,因此报错会持续触发。
修复步骤
- 确认Datadog Agent的运行用户,执行以下命令查询:
输出第一列的用户名即为Agent的运行用户,后续命令将该用户名替换为实际查询到的值即可,下文以默认的ps aux | grep datadog-agent | grep -v grepdd-agent为例。 - 切换到Agent运行用户,执行ssh连接命令,将localhost添加到该用户的known_hosts列表:
连接时根据提示输入sudo -u dd-agent ssh myusername@localhostyes确认接收主机密钥,完成一次正常连接后即可自动写入记录。 - 校验known_hosts文件权限,避免权限不足导致Agent无法读取文件:
sudo chown dd-agent:dd-agent /home/dd-agent/.ssh/known_hosts sudo chmod 600 /home/dd-agent/.ssh/known_hosts - 重启Datadog Agent让配置生效:
重启后等待1-2分钟,查看Agent状态页即可看到SSH检查恢复正常。sudo systemctl restart datadog-agent
测试环境快速方案(生产不推荐)
如果是测试环境不想手动配置known_hosts,可以直接修改SSH检查配置文件/etc/datadog-agent/conf.d/ssh_check.d/conf.yaml,添加add_missing_keys: true参数让检查自动添加缺失的主机密钥:
instances: - host: localhost port: 22 username: myusername # 此处填写你的SSH认证信息,密码或私钥路径二选一 password: your_ssh_password # private_key_file: /path/to/your/private/key add_missing_keys: true
修改完成后同样重启Agent即可生效。
注意:该配置会自动信任所有连接到的主机密钥,存在SSH中间人攻击风险,禁止在生产环境使用。
内容的提问来源于stack exchange,提问作者Ashish Karpe
相关产品推荐
相关产品推荐

