设计师网站建设,厅网站集约化建设,工商企业网,2022有创意的广告Jenkins解决Host key verification failed 分析原因情况 一、用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时#xff0c;OpenSSH会核对公钥。如果公钥不同#xff0c;OpenSSH会发出警告#xff0c;避免…Jenkins解决Host key verification failed 分析原因情况 一、用OpenSSH的人都知ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时OpenSSH会核对公钥。如果公钥不同OpenSSH会发出警告避免你受到DNS Hijack之类的攻击。
SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来配置的。默认情况下StrictHostKeyCheckingask。
简单说下它的三种配置值 StrictHostKeyCheckingno 最不安全的级别当然也没有那么多烦人的提示了相对安全的内网时建议使用。如果连接server的key在本地不存在那么就自动添加到文件中默认是known_hosts并且给出一个警告。
StrictHostKeyCheckingask 默认的级别就是出现刚才的提示了。如果连接和key不匹配给出提示并拒绝登录。
StrictHostKeyCheckingyes 最安全的级别如果连接与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/bash2生成jenkins用户密钥对
[rootbogon .ssh]# su - jenkins
-bash-4.2$ ssh-keygen -t rsa
回车
# 把公钥传输到目标服务器上
-bash-4.2$ ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root192.168.1.13使用sudo提升普通用户权限
vim /etc/sudoer ,进行修改操作和visudo操作一样
用visudo 去修改文件,命令和命令之间要用逗号,最后用visudo -c检查语法是否出错.
visudo
root ALL(ALL) ALL # 原有的
jenkins ALL(ALL) NOPASSWD:/usr/bin/ssh,/usr/bin/rsync # 新增的最后就能够在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.old3、第三种解决办法 - 未采用
解决方法
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、第四周记录错误信息 - 未采用
1go_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 rootip(目标主机ip)
(4) 不用重启任务主机