首页 文章

Jenkins主机密钥验证失败

提问于
浏览
140

我有 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

我用_1534364测试了:

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 存储库 .

谢谢你的帮助!

11 回答

  • 37

    切换到 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中收到此错误 .

  • 162

    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

    或者您可以使用:

    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 .

  • 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

    现在连接詹金斯

    sudo su jenkins
    

    试试jenkins命令

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

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

  • 1

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

    你shoud删除用户名@

  • 4
    • 确保我们没有编辑任何默认的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 . 它应该没有密码登录 .

    Note: 不要更改用户的.ssh目录中文件的默认权限,最终会遇到不同的问题

  • 1

    最好的方法是在Jenkins文件中或任何你想要的地方使用“https”URL格式的“git url” .

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

  • 1

    尝试

    ssh-keygen -R主机名

    -R hostname从known_hosts文件中删除属于hostname的所有密钥 . 此选项对于删除散列主机很有用

  • 1

    SSH

    如果您使用SSH尝试它,那么 Host key Verification 错误可能由于几个原因而出现 . 请按照以下步骤克服所有原因 .

    • 将Environment变量设置为 HOME ,并将地址作为 .ssh 文件夹的根目录 . 例如: - 如果您的.ssh保存在 Name 文件夹中 . C:/用户/名称 .

    • 现在确保还在存储库链接中提供了公共SSH密钥 . 它是github或bitbucket或任何其他 .

    • 打开git bash . 并尝试从存储库中克隆项目 . 这将有助于在known_host文件中添加存储库URL,该文件正在.ssh文件夹中自动创建 .

    • 现在打开jenkins并创建一份新工作 . 然后单击configure .

    • 在Git下的源代码管理中提供克隆URL . URL应该以git@github.com / .........或ssh:// proje ........开头 .

    • 在Credential下,您需要添加要克隆项目的存储库表单的用户名和密码 . 选择该凭证 .

    • 现在应用并保存配置 .

    • 宾果!开始建设项目 . 我希望你现在不会得到任何主机密钥验证错误!

  • 16

    从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
    • 登录为jenkins使用:"sudo su -s /bin/bash jenkins"

    • git克隆所需的repo,导致键错误

    • 它会要求您通过显示是/否(输入是或否)来添加密钥

    而已!

    你现在可以重新开始jenkins的工作了 .

    我希望你能解决这个问题 .

相关问题