主机密钥验证失败

我有一个问题与 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

我用 测试过:

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中仍然不能使用 饭桶存储库。

谢谢帮忙。

279046 次浏览

切换到 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 中得到这个错误。

遇到了同样的问题,我就这么解决了:

对 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

并且 clear ~/. ssh/know _ hosts

现在连接成 Jenkins

sudo su jenkins

试试 Jenkins 的命令

git ls-remote -h git@bitbucket.org:user/project.git HEAD

如果没有问题出现,现在詹金斯将能够连接回购(至少对我 ^ ^)

使用 https://bitbucket.org/YYYY/XX.git

你应该删除用户名@

Jenkins 是个服务账户,没有设计外壳。人们普遍认为,服务帐户。不能以交互方式登录。

要解决“ Jenkins 主机密钥验证失败”,请执行以下步骤。

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)按回车-> 不要给任何密码-> 按回车

             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 将再次给出错误“主机验证失败”

一旦手动完成,现在去找詹金斯并进行构建

好好享受吧!

祝你好运

  • 确保我们没有编辑任何默认的 sshd _ config 属性来跳过错误

  • 主机验证失败-肯定是在 known_hosts文件中丢失了主机名

  • 登录到进程失败的服务器,执行以下操作:

    1. 运行进程的用户的 Sudo

    2. ssh-copy-id destinationuser@destinationhostname

    3. 它会第一次像这样提示,说是,它也会第一次询问密码:

      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*
      

      密码提示? 输入密码

    4. 现在,从运行进程的服务器上执行 ssh destinationuser@destinationhostname操作,它不需要密码就可以登录。

      不要更改用户的 目录中文件的默认权限,否则会出现不同的问题

或者你可以使用:

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

节选自 大意

最好的方式,你可以只是使用你的“ giturl”在“ https”的网址格式在詹金斯文件或任何地方,你想要的。

git url: 'https://github.com/jglick/simple-maven-project-with-tests.git'

试试看

Ssh-keygen-R 主机名

- R hostname 从 known _ hosts 文件中删除属于 hostname 的所有键

SSH

如果您正在尝试使用 SSH,那么由于几个原因可能会出现 主机密钥验证错误。按照以下步骤克服所有原因。

    < li > 将环境变量设置为 ,并提供地址作为 文件夹的根目录。如果你的。Ssh 保存在 姓名文件夹中。 C:/Users/Name.
  1. 现在确保在存储库链接中也提供了公共 SSH 密钥。不是 Github 就是 bitbucket 或者其他什么。
  2. 开放的饭桶狂欢。并尝试从存储库克隆项目。这将有助于在 known _ host 文件中添加存储库 URL,该文件将在。Ssh 文件夹。
  3. 现在打开 jenkins 并创建一个新作业。然后单击 configure。
  4. 在 Git 的源代码管理中提供克隆 URL,URL 应该以 Git@github.com/... ... 或者 ssh://proje... ... 开始。
  5. 在“凭据”下,您需要添加要克隆项目的存储库表单的用户名和密码。选择凭证。
  6. 现在应用并保存配置。
  7. 宾果! 开始建立项目。我希望现在你不会得到任何主机键验证错误!

从 bitbucket 和 github 复制主机密钥:

ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa bitbucket.org)" >> /root/.ssh/known_hosts'
ssh root@deployserver 'echo "$(ssh-keyscan -t rsa,dsa github.com)" >> /root/.ssh/known_hosts'
  1. 用“ sudo su-s/bin/bash jenkins”作为 jenkins 登录
  2. Git 克隆了导致键错误的所需回购文件
  3. 它会要求您通过显示“是”/“否”(输入“是”或“ y”)来添加密钥

就是这样!

现在可以重新运行 Jenkins 作业了。

我希望这能解决你的问题。

我碰到了这个问题,结果发现问题是 Jenkins 服务没有以 Jenkins 用户的身份运行。所以像 Jenkins 用户那样运行命令就可以了。

至于解决方案(例如 Windows server) ,在全局属性中定义以下环境变量:

GIT_SSH_COMMAND="ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"

Jenkins, Global properties, Environment variables, GIT_SSH_COMMAND

注意: 如果您没有看到这个选项,那么您可能需要使用 < em > EnvInject 插件

问题在于/var/lib/jenkins/。Ssh/known _ hosts.它存在于第一种情况中,但不存在于第二种情况中。这意味着您要么在不同的系统上运行,要么第二种情况以某种方式被关在 chroot 中,或者通过其他方式与文件系统的其余部分分离(这对于运行来自 jenkins 的随机代码是一个好主意)。

接下来的步骤是查明如何创建这个用户的 chroot 并修改这个 chroot 中的已知主机。或者只是采用忽略已知主机的其他方法,比如 ssh-keyscanner、 StrictHostKeyChecking = no 或者 so。

在 ssh-keygen 之后,可能只需要用以下方法将公钥复制到远程主机:

ssh-copy-id -i ~/.ssh/mykey user@host

使用 ssh-keyscanner 应该更加容易:

ssh-keyscan bitbucket.org >> ~/.ssh/known_hosts

这个命令将把所有必需的主机放到 ~/.ssh/known_hosts。您需要在您的 Jenkins 机器中运行这个命令。您还可以创建一个作业,并将该命令放入该作业的 Configure 的“ Execute shell”部分,然后执行该作业。

我认为,许多人没有认识到,至少可以从詹金斯2.361:

enter image description here

顺便说一下,没有验证肯定不是最好的选择。