Windows构建节点下Jenkins pipeline执行git push失败,known_hosts路径在哪?
解决方案
1. Windows系统known_hosts文件存储路径
SSH的known_hosts文件存储路径和执行命令的用户身份直接相关,当前场景使用的是SYSTEM系统账户,对应路径如下:
- 普通登录用户路径:
C:\Users\<你的用户名>\.ssh\known_hosts - SYSTEM账户64位程序调用路径:
C:\Windows\System32\config\systemprofile\.ssh\known_hosts - SYSTEM账户32位程序调用路径(常见于32位Jenkins Agent进程):
C:\Windows\SysWOW64\config\systemprofile\.ssh\known_hosts
注意:如果对应路径下没有
.ssh目录,需要手动创建该目录后再操作。
2. 添加Bitbucket主机密钥的方法
方法1:命令行自动添加(推荐)
以管理员权限打开PowerShell或CMD,执行以下命令获取Bitbucket的主机公钥并写入对应路径的known_hosts文件即可,以64位SYSTEM账户为例:
ssh-keyscan bitbucket.org >> C:\Windows\System32\config\systemprofile\.ssh\known_hosts
验证是否生效:执行ssh -T git@bitbucket.org,无主机密钥校验报错即为配置成功。
方法2:交互模式手动添加
使用PsExec工具启动SYSTEM权限的CMD窗口,手动执行一次git push命令,遇到主机密钥确认提示时输入yes,系统会自动将公钥写入对应known_hosts文件。
临时测试方案(不推荐生产环境使用)
如果只是临时验证功能,可以在Pipeline的sh步骤中关闭主机密钥校验,修改代码如下:
stage("Create and push branch") { sh """ export GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=no" git checkout development git checkout -b feature/test-branch-access git push origin feature/test-branch-access """ }
补充说明
拉代码正常、push报错的原因是:Jenkins内置的git插件在拉取代码时会自动处理主机密钥校验逻辑,而后续自定义sh步骤调用的是系统原生git命令,会触发SSH的主机密钥校验流程,因此需要单独配置known_hosts文件。
内容的提问来源于stack exchange,提问作者Chris F
相关产品推荐
相关产品推荐

