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

如何解决Jenkins构建时known_hosts文件不存在的报错问题?

问题原因

你遇到的报错核心是:Jenkins采用的「Known hosts file」主机密钥验证策略要求存在对应的known_hosts文件,但Jenkins默认以jenkins用户运行,无法访问你在root用户下生成的~/.ssh/known_hosts文件,或者该用户自身的~/.ssh目录下根本没有这个文件。

解决方案

方法1:为Jenkins运行用户配置SSH环境

  • 进入Jenkins容器:docker exec -it <你的Jenkins容器名/ID> bash
  • 切换到jenkins用户:su - jenkins(若切换失败,执行bash -c "su - jenkins")
  • 生成SSH密钥对(按需执行):ssh-keygen -t rsa -C "your-email@example.com",全程回车默认配置即可
  • 验证GitHub连接并生成known_hosts:执行ssh -T git@github.com,输入yes确认主机密钥,此时jenkins用户的~/.ssh/目录下会自动生成known_hosts文件
  • 将jenkins用户的公钥内容(执行cat ~/.ssh/id_rsa.pub获取)添加到GitHub账户的SSH密钥列表中
  • 在Jenkins凭证管理中,配置该jenkins用户的私钥(路径为/var/jenkins_home/.ssh/id_rsa)

方法2:修改Jenkins的Git主机密钥验证策略

  • 登录Jenkins后台,进入Manage Jenkins -> Configure Global Security
  • 找到Git Host Key Verification Configuration模块
  • 将验证策略从「Known hosts file」改为以下任意一种:
    • Accept first connection:适合测试环境,首次连接自动信任主机密钥
    • Manually provided keys:更安全,手动添加GitHub的主机密钥,可通过执行ssh-keyscan github.com获取对应密钥内容

方法3:调整root用户SSH目录权限(不推荐,存在安全风险)

若坚持使用root用户的SSH配置,执行以下命令:

  • 进入容器后修改目录归属:chown -R jenkins:jenkins /root/.ssh
  • 调整权限确保Jenkins可访问:chmod 700 /root/.ssh && chmod 600 /root/.ssh/*
  • 在Jenkins凭证中指定私钥路径为/root/.ssh/id_rsa

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:33:16