如何使用别名访问Jenkins中的远程Git存储库?
短版 我正在使用别名连接我的远程Git存储库。它可以工作,但当我将这样的存储库添加到Jenkins时,它无法访问存储库并显示错误: 无法连接到存储库:命令“git-c core.askpass=true” ls远程-hgit@github.com-foo:myaccount/myrepository.git HEAD” 返回的状态代码128:stdout:stderr:ssh:无法解析 主机名github.com-foo:名称或服务未知致命:无法 从远程存储库读取 请确保您拥有正确的访问权限和存储库 存在如何使用别名访问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:名称或服务未知致命:无法 从远程存储库读取 请确保您拥有正确的访问权限和存
详细问题描述 为了
提交
/作为不同的用户推送
代码,我使用了别名:
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]保存
Jenkins->Configuration->[部分]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
的符号链接。我还在SSHconfig
文件中添加了一个符号链接: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密钥文件和SSHconfig
复制到Jenkins主目录。在这之后,我遇到了权限问题,但是它们已经通过chown-rjenkins/var/lib/jenkins/.ssh
解决了。非常感谢你的帮助!