Jenkins Pipeline执行shell脚本远程连接主机时 Host key verification failed

27 篇文章 1 订阅
24 篇文章 0 订阅

                      --昨夜西风凋碧树,独上高楼,望尽天涯路

  • 错误描述

当Jenkins Pipeline通过执行shell脚本,远程连接服务器发布项目的时候出现校验失败:

Jenkins已经配置了免密登陆远程服务器,以及在Jenkins 宿主机中通过root用户执行脚本是可以进行免密登陆远程主机的

配置免密登陆 戳 :Here

  • 原因

Why?root用户登录Jenkins宿主机可以执行脚本,通过Jenkins提示校验失败。

经过排查以及分析,发现Jenkins进行持续集成和持续发布的时候是通过Jenkins用户来进行这些步骤的,由于免密登陆是通过root用户配置的,所以对Jenkins用户是不生效的。下面我们给Jenkins用户配置免密登陆:

由于Jenkins用户默认是无法登陆的,所以首先通过如下命令:

sudo vim /etc/passwd

 修改Jenkins中的/bin/false为/bin/bash:

这时执行su - jenkins 发现可以切换用户,但是命令提示符的用户名显示的是 -bash-4.1$。

执行 vim ~/.bash_profile 修改环境变量,新加代码:

export PS1='[\u@\h \W]\$'

加载修改完的bash_profile:

source ~/.bash_profile

之后通过su jenkins切换到jenkins用户,正常。

下面通过jenkins用户设置免密登陆(和root一样):戳 Here

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
在使用Jenkins调用Shell脚本执行SSH,出现"host key verification failed"错误是因为SSH无法验证远程主机的密钥。这可能是由以下原因导致的: 1. 第一次连接:当第一次使用SSH连接到远程主机主机的密钥会被保存在~/.ssh/known_hosts文件中。如果主机的密钥发生了变化,就会导致验证失败。 解决方法:打开Jenkins所在服务器的终端,用ssh命令手动连接到该远程主机,确认是否出现了密钥变化的提示信息。如果确认变化是合理的,可以删除~/.ssh/known_hosts文件中对应的主机密钥,然后重新执行Jenkins任务。 2. 未正确配对:如果远程主机使用了公钥/私钥对进行连接验证,而Jenkins任务在使用SSH没有正确配置公钥/私钥对,也会导致验证失败。 解决方法:检查Jenkins任务中SSH配置的密钥路径是否正确,并确保公钥已经添加到远程主机的~/.ssh/authorized_keys文件中。 3. hosts文件设置不正确:如果在远程主机的/etc/hosts文件中设置了不正确的主机名,会导致验证失败。 解决方法:在远程主机上检查/etc/hosts文件,确保主机名和IP地址的对应关系正确。 综上所述,解决"host key verification failed"错误的方法包括删除已知主机密钥、正确配置公钥/私钥对和检查/etc/hosts文件设置等。根据具体情况进行排查和解决,可以消除该错误并使Jenkins任务能够顺利执行SSH操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值