【问题标题】:Host key verification fails for a private git npm repository in jenkinsjenkins 中私有 git npm 存储库的主机密钥验证失败
【发布时间】:2020-10-22 12:41:30
【问题描述】:

我们有一个节点项目,它使用一些私有 bitbucket 存储库作为 npm 依赖项。这些在我们的package.json 中添加如下:

"errors": "git+ssh://git@bitbucket.org/[USER]/[REPO].git",

我们有一个用Jenkinsfile 定义的 jenkins 构建作业。此文件使用Credentials Plugin 定义一个私有 ssh 密钥,该密钥在构建作业中用于拉取私有存储库,如下所示:

stage('Install dependencies') {
container('node-image') {
    sshagent(['degov-git']) {
        sh 'mkdir $HOME/.ssh && touch $HOME/.ssh/known_hosts && chmod 600 $HOME/.ssh/known_hosts'
        sh 'ssh-keyscan -t rsa bitbucket.org >> $HOME/.ssh/known_hosts'
        sh 'npm install'
    }
}

}

但是,我们收到主机密钥验证失败的错误:

[2019-05-05T07:36:26.027Z] npm ERR! Error while executing:
[2019-05-05T07:36:26.027Z] npm ERR! /usr/bin/git ls-remote -h -t ssh://git@bitbucket.org/[USER]/[REPO].git
[2019-05-05T07:36:26.027Z] npm ERR! Host key verification failed.

在 Jenkins 中使用 sshagent 时是否可以添加主机密钥?我们该怎么做呢?

谢谢。

【问题讨论】:

  • 你找到解决这个问题的办法了吗?
  • 不,很遗憾没有。我们现在结束了将包作为 git 子模块的集成。
  • 我终于解决了我的问题,但我不确定你和我的上下文在哪里相同。我使用 ansible,然后我使用私有存储库中的子模块进行 npm 安装。 Ansible 使用 sudo 执行 npm 命令,但以普通用户身份登录,而登录用户不知道 ssh 密钥和主机。我刚刚复制并正确访问了登录用户的 ssh 密钥和 known_hosts。很脏,但它成功了

标签: node.js git jenkins npm


【解决方案1】:

bitbucket.org 可能有许多面向公众的服务器,因此对单个 URI 进行密钥扫描不一定有效(当随机到达不同的服务器时)。此外,将(>> 而不是>)附加到known_hosts 文件的策略最终会生成一个非常大的文本文件,其中包含重复的、可能存在冲突的条目。 Cloudbees 讨论解决问题的策略。

  1. 一种解决方案可能是将 keyscan 调用更改为 ssh-keyscan -t ‘ssh-rsa,ssh-dss’ $AGENT_HOSTNAME_OR_IP,它会收集额外的密钥。我还考虑使用~ 作为.ssh 目录的位置,而不是$HOME,我注意到这在最近的故障排除工作中有所不同。使用sh "printenv | sort" 显示作业中当前ENVIRONMENT 变量的准确值。

  2. 另一种解决方案,可能不合适,是恢复到 SSH 代理 until mid-2017 之前的行为,它设置了 StrictHostKeyChecking 关闭。 (在一个安全的 LAN 上,Jenkins 服务器和本地 Git 服务器彼此相邻——也许通过一个私有网络——这可能没问题。)这是通过使用类似 @987654336 的东西擦洗和重写 ~/.ssh/config 文件来完成的。 @。我想今天我不会在开放的 Web 上这样做,但这是一个值得在本地考虑的选项。

注意: Jenkins 上sshagent 中的另一个常见错误报告no user exists for uid 所以ssh 操作失败。几个版本之前,SSH 代理更新了一个底层库,现在需要系统上的预配用户。同样,这可以通过类似于solution in this Jenkins ticket 的方法来解决。

希望这里的信息能找到可能偶然发现此问题的其他人作为相关故障排除关键字的第一个搜索结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    相关资源
    最近更新 更多