git - 我无法在 jenkins 中连接 azure 存储库

标签 git azure jenkins

我在 Azure devops 中有一个版本化项目,我想将其与其具有的 Git 选项集成到 Jenkins 中。

但是 Jenkins 给了我以下错误:

Failed to connect to repository: 
  Error performing command: git.exe ls-remote -h URL

Jenkins

最佳答案

许多 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/

相关文章:

git - 使用 SSH key 时为 "*** Please tell me who you are."

ruby-on-rails - 将 db/schema.rb 放入 .gitignore 列表是个好主意吗?

c# - 如何使用 Moq 在 C# 中模拟 Azure 存储帐户?

jenkins - 如何运行用户可以输入日期值的 Jenkins 作业?

android - Gradle Artifactory 插件失败,出现 "Cannot cast object to ArtifactoryPluginConvention"

java - Jenkins 代理崩溃/终止由 : java. security.AccessControlException 引起:

Git check out HEAD+1 和 HEAD-1

java - 根据 JGit 的提交日期检查特定修订版

asp.net - 我们可以使用 imageresizer 加速或避免对图像请求使用 AuthorizeRequest 吗?

python - Ansible - 收到意外的关键字参数 - check_invalid_arguments