当前位置:   article > 正文

Jenkins解决Host key verification failed (2)

Jenkins解决Host key verification failed (2)

Jenkins解决Host key verification failed

在这里插入图片描述

分析原因情况

一、用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告,避免你受到DNS Hijack之类的攻击。

SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下,StrictHostKeyChecking=ask。

简单说下它的三种配置值:
StrictHostKeyChecking=no
不安全的级别,当然也没有那么多烦人的提示了,相对安全的内网时建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中(默认是known_hosts),并且给出一个警告。

StrictHostKeyChecking=ask
默认的级别,就是出现刚才的提示了。如果连接和key不匹配,给出提示,并拒绝登录。

StrictHostKeyChecking=yes
最安全的级别,如果连接与key不匹配,就拒绝连接,不会提示详细信息。

二、使用 ssh-keygen -R hostname 命令

ssh-keygen -R xxx.xxx.xxx.xxx (服务器ip地址)
目的是清除你当前机器里关于你的远程服务器的缓存和公钥信息,注意是大写的字母“R”。
这里相当于重新配置跟目标主机的链接关系

使用man命令查看下ssh-keygen命令的详细用法

解决问题步骤

1、出错的问题需要初始化操作 - 采用成功

a.jenkins普通用户无法执行某些系统命令;

b.没有为jenkins用户生成过密钥对,也没有将他的公钥拷到目标服务器上.

解决办法:
(1)在安装jenkins后,系统生成了jenkins这个普通用户,但是在/etc/passwd中,他的shell是/bin/false,所以他不能登录系统,也没有家目录;

首先我们修改他的登录权限,将/bin/false改为/bin/bash,切换到jenkins用户,su - jenkins,他的终端显示为-bash-4.2$

jenkins:x:997:995:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
  • 1

(2)生成jenkins用户密钥对

[root@bogon .ssh]# su - jenkins
-bash-4.2$ ssh-keygen -t rsa
回车
# 把公钥传输到目标服务器上
-bash-4.2$ ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root@192.168.1.1
  • 1
  • 2
  • 3
  • 4
  • 5

(3)使用sudo提升普通用户权限

vim /etc/sudoer ,进行修改操作,和visudo操作一样
用visudo 去修改文件,命令和命令之间要用逗号,最后用visudo -c检查语法是否出错.
visudo
root    ALL=(ALL)       ALL  # 原有的
jenkins ALL=(ALL)       NOPASSWD:/usr/bin/ssh,/usr/bin/rsync # 新增的
  • 1
  • 2
  • 3
  • 4
  • 5

最后就能够在jenkins中使用command命令执行了

最后不要忘了重启操作

systemctl restart jenkins

2、第二种解决方法 - 未采用

一般这个问题,是你重置过你的服务器后。你再次想访问会出现这个问题。
ssh-keygen -R 你要访问的IP地址

ssh-keygen -R  ip
# Host ip found: line 2 type ECDSA
/root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old
  • 1
  • 2
  • 3
  • 4

3、第三种解决办法 - 未采用

解决方法:

(1) 在 .ssh目录下添加config文件,键入

StrictHostKeyChecking no

UserKnownHostsFile /dev/null

(2)删除 .ssh/know_hosts中对应ip的相关rsa信息

设置authorized_keys 为644

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)

4、第四周记录错误信息 - 未采用

(1)go_test 工程 中 /root/.ssh/authorized_keys 中构建机的jenkins 用户的 公钥更新了

(2)直接更新构建机 ssh-keygen -t rsa,公钥信息更新了,重新生成

(3)这期间不用重启sshd ,jenkins

5、记录我在构建机上使用rsync命令同步代码到目标主机失败的原因,并且我手动在构建机运行可以成功 - 采用成功

前提是在root账户里ssh目标主机可成功

原因:root账户的 .ssh中know_hosts中存在目标主机ip记录,但是jenkins账户的.ssh的know_host中不存在目标主机ip记录,因为构建机运行的账户其实是以jenkins运行的,所有之前一直失败。

修改:登录到 jenkins账户,进行 ssh登录验证,将ip相关信息自动加入到known_host中

(1) su - jenkins
(2) cd .ssh
(3) ssh root@ip(目标主机ip)
(4) 不用重启任务主机
  • 1
  • 2
  • 3
  • 4
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/141726
推荐阅读
相关标签
  

闽ICP备14008679号