Jenkins链接私有仓库Failed to connect to repository,stderr: No ECDSA...的问题

Jenkins版本

bash 复制代码
2.492.2

git版本

bash 复制代码
git version 2.43.5

如图,我配置好了公钥在gitee,私钥填在credential里面,但是还是会发生这种报错链接不上的情况

我采取了如下尝试:

bash 复制代码
[root@jenkins1 ~]# git ls-remote -h -- git@gitee.com:ashmcarker/ashmcracker.git HEAD

The authenticity of host 'gitee.com (182.255.33.134)' can't be established.
ECDSA key fingerprint is xxxxxxxx
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com,182.255.33.134' (ECDSA) to the list of known hosts.
[root@jenkins1 ~]# ls /root/.ssh/
authorized_keys  id_rsa  id_rsa.pub  known_hosts

原因是Jenkins没有识别到gitee的ECDSA主机指纹,可以看到这里已经生成了known_hosts文件在root家目录的.ssh下,但是还是不行,

因为Jenkins默认是以自动创建的一个jenkins用户运行的,而该用户未信任gitee.com的ECDSA主机指纹,导致Host key verification failed报错。root用户执行的git ls-remote -h操作只对root用户的known_hosts有效,而Jenkins用户还是不行。

查看一下passwd目录,查看Jenkins的家目录是哪里

bash 复制代码
sudo cat /etc/passwd 

可以看到这里Jenkins的家目录为/var/lib/jenkins,并且它是个false的用户,不能登录终端

bash 复制代码
jenkins:x:991:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false

这里有两种办法去解决,

解决方法一

修改Jenkins的运行用户为root,方法在下面我另一篇文章,这个时候因为我在前面已经使用git ls-remote -h -- git@gitee.com:ashmcarker/ashmcracker.git HEAD去生成了主机指纹在root的.ssh目录,所以改为root以后就可以使用私钥直接去连接gitee的私有仓库了

Jenkins 2.492.2修改运行用户为 root的方法

但是这种方法不是很推荐在生产环境进行实行,所以Jenkins 的最佳实践仍然是让它以非 root、最小权限且独立的系统用户运行

解决方法二(推荐)

由于私有仓库在 gitee.comgithub.com 等平台,SSH 连接需要验证主机指纹,且 Jenkins 用户默认往往没有任何已知主机记录。通常需要将 gitee.comgithub.com 等主机指纹加入到 Jenkins 用户的 ~/.ssh/known_hosts 文件当中,以通过 SSH 的 strict host key checking。

  1. 确认jenkins用户的家目录并创建.ssh目录:
bash 复制代码
sudo mkdir -p /var/lib/jenkins/.ssh
sudo chown -R jenkins:jenkins /var/lib/jenkins/.ssh
  1. 添加gitee主机密钥扫描结果到known_hosts
bash 复制代码
sudo -u jenkins ssh-keyscan gitee.com >> /var/lib/jenkins/.ssh/known_hosts
sudo chmod 600 /var/lib/jenkins/.ssh/known_hosts
  1. 最后测试一下是否成功:
bash 复制代码
sudo -u jenkins git ls-remote git@gitee.com:你的仓库地址.git

看到返回仓库相关信息即可。

相关推荐
志栋智能5 小时前
超自动化运维如何支持合规审计?
运维·自动化
小诗懂技术5 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
名字还没想好☜5 小时前
Docker 容器安全加固实战:非 root、只读根文件系统、drop capabilities 与最小攻击面
运维·安全·docker·容器·kubernetes
鹤落晴春6 小时前
有状态应用 vs 无状态应用
运维·云原生·k8s
starzy19908 小时前
虚拟化解决方案全景:软件虚拟化、硬件虚拟化与 Docker 的位置
运维·docker·容器
Neighbor_OldY8 小时前
云上安全配置审计与误配置修复实战:从安全组、OSS、RAM到数据库的全栈排查复盘
大数据·运维·安全·云计算
开心大爆炸9 小时前
xrdp 连接 登录对话框输入密码后闪退
linux·运维·服务器
苏生Susheng11 小时前
【软件实施】Linux系统Shell脚本教程
linux·运维·服务器·chrome·spring boot·学习·实施
2601_9623049111 小时前
把出片接进自动化流水线:2026 年批量 AI 视频生成工具的脚本契约与同类项目对照
运维·人工智能·自动化
Ruiery11 小时前
Linux 6.6内核 IOMMU 深度解析(七):DMA API 与 IOMMU 集成 — 从 dma_map_single 到 iommu_map
linux·运维·服务器