--昨夜西风凋碧树,独上高楼,望尽天涯路
-
错误描述
当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