我在 Azure devops 中有一个版本化项目,我想将其与其具有的 Git 选项集成到 Jenkins 中。
但是 Jenkins 给了我以下错误:
Failed to connect to repository:
Error performing command: git.exe ls-remote -h URL
最佳答案
许多 SO 帖子表明,需要将步骤 4 中列出的以下行添加到 ~/.ssh/config 文件中,但此解决方案需要了解更多关于我的 Jenkins 上下文中 ~ 应该替换为什么的详细信息。以下是我克服这个问题的详细步骤。希望这对某人有帮助。
第 1 步:找到 Jenkins Home。
就我而言,Jenkins 作为服务安装在 Ubuntu 中,并且在没有密码的用户 (jenkins) 下运行。下面的代码让我运行命令来打印 Jenkins 主目录,而无需以 Jenkins 身份登录
sudo -H -u jenkins bash -c 'echo $HOME'
打印的目录是,/var/lib/jenkins/
第 2 步:使用以下命令在 Jenkins 主目录中生成 key 对。
sudo -H -u jenkins bash -c 'ssh-keygen -t rsa'
这应该在 Jenkins 主目录中生成上面列出的 key 对。
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub
步骤 3:将公钥内容添加到 Azure Dev-Ops 存储库
这可以使用 Microsoft 的以下官方文档来完成
[https://learn.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate?view=azure-devops][1]
第 4 步:如果不存在,请在 /var/lib/jenkins/.ssh/
中创建一个名称为 config 的文件,并包含以下内容
Host ssh.dev.azure.com
User git
PubkeyAcceptedAlgorithms +ssh-rsa
HostkeyAlgorithms +ssh-rsa
步骤 5:使用私钥在 Jenkins 中配置凭据以连接到 Azure Repo。
此步骤很重要,可以在公钥(在 Azure 中的步骤 3 中配置)和私钥(在 Jenkins 的步骤 5 中配置)之间建立信任。
通过上述步骤,我能够成功从部署在 Ubuntu 上的 Jenkins 连接到 Azure Devops。虽然这是 Jenkins+Ubuntu+Azure Devops,但这里可以普遍应用于 SSH 的关键观察是要理解:
- 尝试通过 SSH 连接的过程是什么?
- 运行进程的用户是什么?
- #2 中用户的主目录是什么?
- 该用户有 SSH key 对吗?
- 该 key 对的公钥是否受远程信任?
上述问题提供了一个框架,以结构化的方式思考问题以取得进展。希望这对某人有帮助。
关于git - 我无法在 jenkins 中连接 azure 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615525/