我有 jenkins 的问题,设置“git”,显示以下错误:
Failed to connect to repository : Command "git ls-remote -h https://person@bitbucket.org/person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: fatal: Authentication failed
我已经使用 ssh 进行了测试:
git@bitbucket.org:person/projectmarket.git
这是错误:
Failed to connect to repository : Command "git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD" returned status code 128:
stdout:
stderr: Host key verification failed.
fatal: The remote end hung up unexpectedly
我也使用“SSH密钥”完成了这些步骤。
在Jenkins下登录
sudo su jenkins
将您的github密钥复制到Jenkins .ssh文件夹
cp ~/.ssh/id_rsa_github* /var/lib/jenkins/.ssh/
重命名键
mv id_rsa_github id_rsa
mv id_rsa_github.pub id_rsa.pub
但仍未在 jenkins 中使用 git 存储库。
感谢帮助!。
答案 0 :(得分:172)
更改为jenkins
用户并手动运行命令:
git ls-remote -h git@bitbucket.org:person/projectmarket.git HEAD
首次通过SSH连接到新主机时,您将收到标准的SSH警告:
The authenticity of host 'bitbucket.org (207.223.240.181)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)?
键入yes
,然后按Enter键。 bitbucket.org
的主机密钥现在将添加到~/.ssh/known_hosts
文件中,您不会再在Jenkins中收到此错误。
答案 1 :(得分:37)
Jenkins是一个服务帐户,它没有设计shell。通常接受服务帐户。不应该以交互方式登录。
要解决“Jenkins主机密钥验证失败”,请执行以下步骤。我和詹金斯一起使用了mercurial。
1)在终端
上执行以下命令 $ sudo su -s /bin/bash jenkins
提供密码
2)使用以下命令生成公共私钥:
ssh-keygen
你可以看到输出为::
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
3)按Enter键 - >不要给任何密码短语 - >按enter键
Key has been generated
4)转到 - > cat /var/lib/jenkins/.ssh/id_rsa.pub
5)从id_rsa.pub复制密钥
6)从bash退出
7)ssh@yourrepository
8)vi .ssh/authorized_keys
9)粘贴密钥
10)退出
11)手动登录mercurial服务器
注意:请手动登录,否则jenkins将再次给出错误“主机验证失败”
12)一旦手动完成,现在去Jenkins并给出构建
享受!!!
祝你好运
答案 2 :(得分:20)
或者您可以使用:
ssh -oStrictHostKeyChecking=no host
这将是不安全的(中间人攻击)但最简单的解决方案。
更好的方法是在主机和IP地址之间生成正确的映射,因此ssh
不会抱怨:
#!/bin/bash
for domain in "github.com" "bitbucket.org"; do
sed -i "/$domain/d" ~/.ssh/known_hosts
line=$(ssh-keyscan $domain,`nslookup $domain | awk '/^Address: / { print $2 ; exit }'`)
echo $line >> ~/.ssh/known_hosts
done
摘自gist。
答案 3 :(得分:6)
有同样的问题,我这样修理:
重置id_rsa *的权限仅限当前用户没有其他组
chmod o-rwx ~/.ssh/id*
chmod G-rwx ~/.ssh/id*
ls -lart ~/.ssh/
-rw------- 1 jenkins nogroup 398 avril 3 09:34 id_rsa.pub
-rw------- 1 jenkins nogroup 1675 avril 3 09:34 id_rsa
并清除〜/ .ssh / know_hosts
现在以jenkins身份连接
sudo su jenkins
尝试使用jenkins命令
git ls-remote -h git@bitbucket.org:user/project.git HEAD
如果没有问题,现在jenkins将能够连接回购(至少对我来说^^)
答案 4 :(得分:4)
使用https://bitbucket.org/YYYY/XX.git
你应该删除用户名@
答案 5 :(得分:3)
确保我们没有编辑任何默认的sshd_config属性以跳过错误
主机验证失败 - known_hosts
文件中肯定缺少主机名条目
登录进程失败的服务器并执行以下操作:
Sudo给运行该过程的用户
ssh-copy-id destinationuser@destinationhostname
第一次会这样提示,说是,它也会第一次问密码:
The authenticity of host 'sample.org (205.214.640.91)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? *yes*
密码提示? 提供密码
现在,从运行流程的服务器,执行ssh destinationuser@destinationhostname
。它应该没有密码登录。
注意:请勿更改用户的 .ssh 目录中文件的默认权限,最终会遇到不同的问题
答案 6 :(得分:1)
最好的方法是在Jenkins文件中或任何你想要的地方使用“https”URL格式的“git url”。
git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'
答案 7 :(得分:1)
尝试
ssh-keygen -R hostname
-R hostname从known_hosts文件中删除属于hostname的所有密钥。此选项对于删除散列主机
非常有用答案 8 :(得分:1)
<强> SSH 强>
如果您使用SSH进行尝试,则可能会出现主机密钥验证错误,原因有多种。请按照以下步骤解决所有原因。
答案 9 :(得分:1)
从bitbucket和github复制主机密钥:
ssh root @ deployserver'echo“$(ssh-keyscan -t rsa,dsa bitbucket.org)”&gt;&gt; /root/.ssh/known_hosts' ssh root @ deployserver'echo“$(ssh-keyscan -t rsa,dsa github.com)”&gt;&gt; /root/.ssh/known_hosts'
答案 10 :(得分:1)
就是这样!
您现在可以重新运行詹金斯作业。
我希望您能解决您的问题。
答案 11 :(得分:0)
我遇到了这个问题,结果发现问题是jenkins服务没有以jenkins用户身份运行。因此,以jenkins用户身份运行命令就可以了。
答案 12 :(得分:0)
关于解决方法(例如Windows从站),请在全局属性中定义以下环境变量:
GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
注意:如果看不到该选项,则可能需要EnvInject plugin。
答案 13 :(得分:0)
问题与/var/lib/jenkins/.ssh/known_hosts一起使用。它在第一种情况下存在,但在第二种情况下不存在。这意味着您正在不同的系统上运行,或者第二种情况在chroot中以某种方式入狱,或者通过其他方式与文件系统的其余部分分开(对于从jenkins运行随机代码是个好主意)。
下一步是找出如何为该用户创建chroot,并修改该chroot内部的已知主机。或者只是采取其他方法来忽略已知主机,例如ssh-keyscan,StrictHostKeyChecking = no左右。