更新操作系统与Jenkins后,Gerrit Trigger插件公钥认证失败求助
解决Gerrit Trigger插件publickey认证失败问题
检查插件的SSH密钥配置
Gerrit Trigger插件不一定会自动使用Jenkins系统用户的默认SSH密钥,先确认配置:
- 进入Jenkins全局配置里的Gerrit Trigger模块
- 找到对应Gerrit服务器的SSH设置项
- 核对
私钥文件路径是不是Jenkins用户实际用的密钥(比如/var/lib/jenkins/.ssh/id_rsa) - 如果用的是Jenkins内置密钥管理,确保已经正确导入私钥,且对应的公钥已经在Gerrit服务器的账号下配置好
修复密钥文件权限
操作系统更新后很可能改了Jenkins用户或密钥文件的权限,导致插件读不了密钥:
- 先查密钥文件权限:
ls -l /var/lib/jenkins/.ssh/id_rsa,必须是600(只有所有者能读写) - 再查
.ssh目录权限:ls -ld /var/lib/jenkins/.ssh,得是700(只有所有者能访问) - 权限不对的话,执行命令修正:
chmod 700 /var/lib/jenkins/.ssh chmod 600 /var/lib/jenkins/.ssh/id_rsa - 还要确保Jenkins进程的运行用户(一般是
jenkins)是密钥文件和目录的所有者:chown -R jenkins:jenkins /var/lib/jenkins/.ssh
排查JSch版本兼容性
Jenkins更新后自带的JSch库可能和Gerrit Trigger插件不兼容,导致密钥解析失败:
- 去Jenkins插件管理里找Gerrit Trigger,看看有没有更新,直接更到最新版试试
- 如果更插件没用,手动换JSch库:
- 下载和插件兼容的JSch jar包(比如
jsch-0.1.55.jar) - 替换Jenkins安装目录下
WEB-INF/lib里的旧JSch文件 - 重启Jenkins服务
- 下载和插件兼容的JSch jar包(比如
检查Gerrit服务器的SSH配置
操作系统更新也可能影响Gerrit服务器的SSH服务:
- 打开Gerrit服务器的
sshd_config,确认PubkeyAuthentication设为yes - 检查Jenkins账号的公钥是不是正确加到了Gerrit服务器的
~/.ssh/authorized_keys里,而且这个文件权限得是600,目录权限700 - 看Gerrit服务器的SSH日志(比如
/var/log/auth.log或/var/log/secure),找具体的认证失败原因
内容的提问来源于stack exchange,提问作者user0001122
相关产品推荐
相关产品推荐

