背景
使用jenkins发版,构建时使用了调用shell从jenkins服务器scp jar包到业务服务器。
由于新购买了服务器,并且要将jar包cp到新购买的服务器上,涉及到前任运维交接问题,这块一直没有了解。
结果大坑来了。。。。
操作步骤
1.将新购服务器ip加入到jenkins调用的shell ip列表中,构建时报错Host key verification failed. lost connection
看到这个肯定首先想到的是密钥的认证出问题了,所以首先去查找key文件位置。
一开始查看已有服务器的/roo/.ssh/authorized_keys文件有关于jenkins的公钥,但是在jenkins服务器一直找不到密钥对存放位置。
所以干脆直接将已有服务器的authorized_keys中jenkins的公钥信息直接拷贝到新购服务器的/roo/.ssh/authorized_keys,然后重新构建,无果。。
2.在jenkins上重新ssh-keygen打算生成新的key,然后ssh-copy-id将公钥拷贝到新购服务器中,再次构建
Warning: Identity file /root/.ssh/id_rsa not accessible: Permission denied.
Host key verification failed.
lost connection
嗯,没错,在之前错误的基础上又新增错误,说的是该密钥无权限访问,所以还是失败了。
这个原因是因为jenkins配置文件中指定的启动用户是jenkins,所以jenkins权限不够,无法访问该密钥
3.功夫不负有心人,在/var/lib/jenkins/.ssh中找到了专属jenkins的密钥对,于是使用root登录jenkins服务器ssh-copy-id拷贝公钥到新购服务器。
还是报错Host key verification failed. lost connection,到这,心态已经接近崩溃。
4.su jenkins切换到jenkins用户,找到/var/lib/jenkins/.ssh,在jenkins用户中ssh-copy-id拷贝公钥到新购服务器。
然后重构,发现已经可以直接拷贝jar包到新购服务器,解决问题!!!!!!!!!!
总结
做下总结,遇到这种报错,首先想到的是key的问题,可能涉及到一个服务器中有多个密钥对。
1.在对某些服务器实现访问时可能需要-i指定私钥位置才能免密访问。
2.jenkins启动用户涉及到权限问题,所以要么授权要么启动用户更改为root
当然,以上两点为思路,并未做测试,感兴趣的同学可以多多尝试,毕竟多多益善但是作为心态及其不好的我来说,这种坑以后还是少来~~~~
网友评论