问题:
最近搭建新的测试环境,Jenkins 又 又 又 有遇到这类问题,特此记录:
- 1、通过 ssh 拉取git仓库代码时,提示“No RSA host key is known for codeup aliyun . com and you have requested strict checking”。
- 2、在 shell 脚本中操作 linux 系统提示“Permission denied”。
解决问题1:
Jenkins 安装后默认生成并使用 jenkins 用户,与 Linux 本身的用户不同。
如我在测试环境中的用户为 opser,问题1 拉取git失败,我通过linux 直接使用 git clone -b gray git@xxxx.com:xxx/xx.git 是可以拉取到灰度项目代码的,但是在jenkins上却提示ssh key找不到。
经由百度搜索,一堆乱七八糟的答复,经过反复推敲,最后想起用户权限问题,opser 用户有ssh key,而 jenkins 用户没有。
最终,我们通过以下指令未改Jenkins的默认用户为 opser,与linux系统的操作用户保持一致:
- ①、修改配置文件
vim /etc/sysconfig/jenkins
- ②、修改另一个配置文件
vim /usr/lib/systemd/system/jenkins.service
- ③、刷新配置文件
systemctl daemon-reload
- ④、重启 jenkins
systemctl restart jenkins
重启时发生异常,启动失败,查看启动日志可看到下图。
通过 ll 指令发现 /var/lib/jenkins 目录的权限为 jenkins用户所有,而我们修改为 opser 用户后,Jenkins 程序已经没有该目录的操作权限了。
- ⑤、修改 /var/lib/jenkins 目录的操作权限
chown -R opser /var/lib/jenkins
-R 表示同时修改文件夹以及其子目录的文件
- ⑥、再次重启
systemctl restart jenkins
解决问题2:
&emsp 假若看懂了问题1,那么问题2也就松松啦~
通过 ll 指令去查看提示“Permission denied”的问题件夹。不难发现该文件夹的权限,即所有者为root,而不是我们Jenkins用户opser,此时我们就需要修改下root用户为opser用户即可。
总结:
这个问题其实刚学jenkins时是知道且能简单规避的,但由于时间久,生疏了,再加上之前没有笔记记录,更是一下就忘记了,这里记录一下也是为了加深印象,希望以后类似的问题迎刃而解。
评论区