如何使用别名访问Jenkins中的远程Git存储库?

如何使用别名访问Jenkins中的远程Git存储库?,git,github,jenkins,ssh,domain-aliasing,Git,Github,Jenkins,Ssh,Domain Aliasing,短版 我正在使用别名连接我的远程Git存储库。它可以工作,但当我将这样的存储库添加到Jenkins时,它无法访问存储库并显示错误: 无法连接到存储库:命令“git-c core.askpass=true” ls远程-hgit@github.com-foo:myaccount/myrepository.git HEAD” 返回的状态代码128:stdout:stderr:ssh:无法解析 主机名github.com-foo:名称或服务未知致命:无法 从远程存储库读取 请确保您拥有正确的访问权限和存

短版

我正在使用别名连接我的远程Git存储库。它可以工作,但当我将这样的存储库添加到Jenkins时,它无法访问存储库并显示错误:

无法连接到存储库:命令“git-c core.askpass=true” ls远程-hgit@github.com-foo:myaccount/myrepository.git HEAD” 返回的状态代码128:stdout:stderr:ssh:无法解析 主机名github.com-foo:名称或服务未知致命:无法 从远程存储库读取

请确保您拥有正确的访问权限和存储库 存在


详细问题描述

为了
提交
/
作为不同的用户推送
代码,我使用了别名:

C:\Users\myusername\.ssh\config

...

#github.com-foo account
Host github.com-foo
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_foo

#github.com-bar account
Host github.com-bar
    HostName github.com
    User git
    IdentityFile ~/.ssh/id_rsa_bar

...
而不是

git clone git@github.com:myaccount/myrepository.git
我只是用

git clone git@github.com-foo:myaccount/myrepository.git
.ssh
目录可以作为共享文件夹从本地虚拟机访问,因此也可以在虚拟机上使用我的凭据

一切正常

现在我在VM上安装了Jenkins,并希望配置到GitHub上存储的远程存储库的连接。我所做的:

  • 凭据:
    Jenkins->Credentials->[link]全局凭据(不受限制)->[单选按钮]直接输入->[textarea]键->添加->[button]保存

  • Git插件:
    Jenkins->Configuration->[部分]Git插件
    --电子邮件和名称设置:

  • Project Git设置:
    [Project]->配置->[section]源代码管理->[section]Git
    --存储库URL和凭据:
  • 如屏幕截图所示,连接失败


    为了使用别名连接Jenkins中的远程Git存储库,它为什么不工作以及如何工作?

    您需要为Jenkins提供
    ssh
    配置。档案

    C:\Users\myusername\.ssh\config
    
    适用于您的用户,但您还需要
    jenkins
    用户的别名,在该别名下运行的是
    jenkins
    。找到
    jenkins
    用户的主目录,并在那里添加文件
    .ssh\config

    然后,您可能还需要在其主目录中为
    jenkins
    复制/创建不同的
    ssh
    密钥,因为您的密钥无法从
    jenkins
    用户访问

    在此之后,应设置文件评估权限。这可以通过
    chown-R jenkins/var/lib/jenkins/.ssh
    轻松完成

    在全局Jenkins设置中,私钥可以设置为“From the Jenkins master ~/.ssh”:


    谢谢您的回答!我没有将SSH密钥复制到Jenkins
    .SSH
    目录——我直接将密钥文件内容添加到configs中。但是我找到了Jenkins home文件夹,并将
    $Jenkins\u home/.ssh/known\u hosts
    替换为
    ~/.ssh/known\u hosts
    的符号链接。我还在SSH
    config
    文件中添加了一个符号链接:
    ln-s~/.SSH/config/var/lib/jenkins/.SSH/config
    。尽管如此,我仍然收到相同的连接错误。符号链接可能还不够,因为
    jenkins
    用户可能无法访问它们。你是对的。好的,我试过这样做:我将
    已知的\u主机
    配置
    ,以及(以防万一)关键文件
    id\u rsa\u foo
    id\u rsa\u foo.pub
    复制到
    /var/lib/jenkins/.ssh/
    。在这之后,我重新开始詹金斯。但是它没有帮助——仍然是相同的错误。
    jenkins
    甚至可能忽略ssh配置。为什么不直接使用jenkins中存储的凭据和
    github.com
    hostname?它可以工作!我必须将我的私有SSH密钥文件和SSH
    config
    复制到Jenkins主目录。在这之后,我遇到了权限问题,但是它们已经通过
    chown-rjenkins/var/lib/jenkins/.ssh
    解决了。非常感谢你的帮助!