在Jenkins中,known_hosts
文件用于存储已验证的远程节点主机密钥,避免每次连接时重复验证。以下是基于不同场景的解决方案:
1. 创建并配置 known_hosts
文件
若Jenkins提示 No Known Hosts file
或找不到文件,需手动创建并配置:
- 创建目录及文件:
sudo mkdir -p /var/lib/jenkins/.ssh/ # 根据实际JENKINS_HOME路径调整 sudo touch /var/lib/jenkins/.ssh/known_hosts sudo chown jenkins:jenkins /var/lib/jenkins/.ssh/known_hosts sudo chmod 600 /var/lib/jenkins/.ssh/known_hosts
- 添加目标节点的公钥:
- 以Jenkins用户身份执行:
ssh <节点用户名>@<节点IP> # 首次连接会提示接受主机密钥
- 将本地用户
~/.ssh/known_hosts
中对应的节点公钥行复制到Jenkins的known_hosts
文件中[3][5]。
- 以Jenkins用户身份执行:
2. 调整主机密钥验证策略
若不想手动管理known_hosts
,可修改Jenkins的主机密钥验证策略:
- 进入节点配置页面:
- 启动方式选择
Launch agent agents via SSH
。 - Host Key Verification Strategy 改为
Manually trusted key verification strategy
[3][4]。 - 保存后,Jenkins会跳过自动校验,但需确保目标节点已正确配置SSH免密登录。
- 启动方式选择
3. 配置SSH免密登录
确保Jenkins用户与目标节点之间的SSH免密登录已配置:
- 生成SSH密钥对(若未生成):
sudo -u jenkins ssh-keygen -t rsa -b 4096 # 以Jenkins用户生成
- 部署公钥到目标节点:
sudo -u jenkins ssh <节点用户名>@<节点IP> 'cat >> ~/.ssh/authorized_keys' < /var/lib/jenkins/.ssh/id_rsa.pub
- 设置权限:
sudo -u jenkins chmod 700 /var/lib/jenkins/.ssh/authorized_keys
4. 其他注意事项
- 路径一致性:Jenkins的
.ssh
目录通常位于/var/lib/jenkins/
或/var/jenkins_home/
,需根据实际环境确认[1][3]。 - 权限检查:确保Jenkins用户对
.ssh
目录及文件有读写权限(chmod 600 known_hosts
,chown jenkins:jenkins
)。 - 重启Jenkins:配置变更后,需重启Jenkins服务以生效:
sudo systemctl restart jenkins
总结
- 优先推荐:手动创建
known_hosts
并配置免密登录,确保安全性和稳定性。 - 快速绕过:临时将验证策略改为
Manually trusted key verification
,但长期需补全known_hosts
以避免安全风险[3][5]。
通过以上步骤,可解决Jenkins因known_hosts
缺失或校验失败导致的连接问题。