在Jenkins中,known_hosts
文件用于存储已验证的远程节点主机密钥,避免每次连接时重复验证。以下是基于不同场景的解决方案:
1. 创建并配置 known_hosts
文件
若Jenkins提示 No Known Hosts file
或找不到文件,需手动创建并配置:
-
创建目录及文件 :
bashsudo 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用户身份执行:
bashssh <节点用户名>@<节点IP> # 首次连接会提示接受主机密钥
-
将本地用户
~/.ssh/known_hosts
中对应的节点公钥行复制到Jenkins的known_hosts
文件中[3][5]。
-
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密钥对 (若未生成):
bashsudo -u jenkins ssh-keygen -t rsa -b 4096 # 以Jenkins用户生成
-
部署公钥到目标节点 :
bashsudo -u jenkins ssh <节点用户名>@<节点IP> 'cat >> ~/.ssh/authorized_keys' < /var/lib/jenkins/.ssh/id_rsa.pub
-
设置权限 :
bashsudo -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服务以生效:
bashsudo systemctl restart jenkins
总结
- 优先推荐 :手动创建
known_hosts
并配置免密登录,确保安全性和稳定性。 - 快速绕过 :临时将验证策略改为
Manually trusted key verification
,但长期需补全known_hosts
以避免安全风险[3][5]。
通过以上步骤,可解决Jenkins因known_hosts
缺失或校验失败导致的连接问题。