主机密钥验证失败 - 通过 ssh 下载 terraform 模块
Host Key Verification failed - downloading terraform modules via ssh
尝试通过 ssh 连接到 github 以在 Jenkins 中下载 terraform 模块。下面的terraform init会报错
steps {
container('deploy') {
sh "apt-get update && apt-get install ssh -y"
withCredentials([sshUserPrivateKey(credentialsId: 'github-deploy-key', keyFileVariable: 'IDENTITY_FILE')]) {
sh '''
git config core.sshCommand "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${IDENTITY_FILE}"
terraform init //fails here - terraform init references github modules
'''
}
}
}
然后在 jenkins 构建控制台日志中 - 我得到一个
..Could not download module "network" source code from "git@github.com:GithubOrg/my-repo.git?ref-c322334..."
Host key verification failed.
fatal: could not read from remote repository.
我原以为设置“StrictHostKeyChecking=no”会防止主机密钥错误。
我能够 运行 使用相同的 ssh 密钥对在本地进行 terraform 初始化,它可以毫无问题地连接到 Github 存储库并下载代码。但是在 Jenkins 的这个容器步骤中它不起作用。有什么建议吗?
我应该以某种方式在容器内设置 ssh known_hosts
文件吗?
我最终不得不设置 known_hosts
文件并使用 jenkins 中的 sshagent
插件。
container('deploy') {
sh "apt-get update && apt-get install ssh -y"
sshagent (credentials: ['github-deploy-key']) {
sh '''
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
cd terraform
tfenv use 0.13.7
terraform init
'''
}
}
--
public 部署密钥位于存储库中,私钥位于 Jenkins 凭据管理器中。
尝试通过 ssh 连接到 github 以在 Jenkins 中下载 terraform 模块。下面的terraform init会报错
steps {
container('deploy') {
sh "apt-get update && apt-get install ssh -y"
withCredentials([sshUserPrivateKey(credentialsId: 'github-deploy-key', keyFileVariable: 'IDENTITY_FILE')]) {
sh '''
git config core.sshCommand "ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i ${IDENTITY_FILE}"
terraform init //fails here - terraform init references github modules
'''
}
}
}
然后在 jenkins 构建控制台日志中 - 我得到一个
..Could not download module "network" source code from "git@github.com:GithubOrg/my-repo.git?ref-c322334..."
Host key verification failed.
fatal: could not read from remote repository.
我原以为设置“StrictHostKeyChecking=no”会防止主机密钥错误。
我能够 运行 使用相同的 ssh 密钥对在本地进行 terraform 初始化,它可以毫无问题地连接到 Github 存储库并下载代码。但是在 Jenkins 的这个容器步骤中它不起作用。有什么建议吗?
我应该以某种方式在容器内设置 ssh known_hosts
文件吗?
我最终不得不设置 known_hosts
文件并使用 jenkins 中的 sshagent
插件。
container('deploy') {
sh "apt-get update && apt-get install ssh -y"
sshagent (credentials: ['github-deploy-key']) {
sh '''
mkdir -p ~/.ssh
ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts
cd terraform
tfenv use 0.13.7
terraform init
'''
}
}
--
public 部署密钥位于存储库中,私钥位于 Jenkins 凭据管理器中。