【发布时间】: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。很脏,但它成功了