You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins执行Git push报错Host key verification failed的解决求助

问题分析与解决方案

从你提供的SSH debug日志中,关键错误是:

debug1: read_passphrase: can't open /dev/tty: No such device or address

这说明SSH尝试读取加密密钥的密码,但Jenkins运行在无终端的非交互环境中,无法输入密码,导致主机密钥验证失败。以下是针对性解决方案:

1. 使用无密码保护的SSH密钥

Jenkins的sshagent插件无法在非交互环境中输入密钥密码,因此必须确保你配置的jenkins凭据对应的SSH私钥是无密码加密的:

  • 生成新的无密码SSH密钥对:
    ssh-keygen -t ed25519 -f github_jenkins_key -N ""
    
  • 将生成的公钥(github_jenkins_key.pub)添加到GitHub账户的SSH Keys列表中
  • 替换Jenkins中jenkins凭据的私钥内容为github_jenkins_key的内容

2. 强制SSH使用批量模式

在执行git push --tags前,设置GIT_SSH_COMMAND时添加BatchMode=yes参数,禁止SSH尝试交互式输入:

export GIT_SSH_COMMAND="ssh -o BatchMode=yes"

修改后的Jenkinsfile片段:

sshagent (credentials: ['jenkins']) {
sh """
    git config --add url."git@github.com:".insteadOf "https://github.com/"
    git config user.name 'Jenkins'
    git config user.email '$$$+###@users.noreply.github.com'
    export GIT_SSH_COMMAND="ssh -o BatchMode=yes"
    git tag -a dimToOff_v"${PRETTY_BUILD_VERSION}"_"${BUILD_NUMBER}" ${COMMIT_ID} -m "${JENKINS_TAG_MESSAGE}"
    git push --tags
"""
}

3. 直接写入GitHub官方主机密钥

避免ssh-keyscan可能出现的网络问题,直接将GitHub官方的主机密钥写入known_hosts:
在sh步骤中添加:

mkdir -p /home/jenkins/.ssh
echo "github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl" >> /home/jenkins/.ssh/known_hosts
echo "github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=" >> /home/jenkins/.ssh/known_hosts
echo "github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=" >> /home/jenkins/.ssh/known_hosts
chmod 700 /home/jenkins/.ssh
chmod 600 /home/jenkins/.ssh/known_hosts

4. 验证SSH目录权限

确保Jenkins用户对.ssh目录和文件有正确权限:

chmod 700 /home/jenkins/.ssh
chmod 600 /home/jenkins/.ssh/known_hosts

内容的提问来源于stack exchange,提问作者rp346

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:22:00