如果你在用jenkins,编写的shell脚本用到ansible命令,报这个错主要是因为你的tomcat启动的用户是tomcat。如果你在root下的ansible命令能调通是因为你在目标机器配置的authorized_keys,而tomcat用户没有配置,因此tomcat用户你是调不通的,所以最好的解决方法就是对tomcat用户执行ansible命令都加sudo执行,这样就会用/home/root/.ssh/id_rsa.pub 来执行ssh通信。
解决方法1
所有ansible脚本执行 sudo ansible xxx的命令,所以tomcat需要免密码sudo的权限.
解决方法2
给tomcat用户配置ssh-copy-id -i ,公钥打到其他机器(不推荐)
--------
添加sudoers流程:
1.切换到root下 sudo su - root
2. chomd u+w /etc/sudoers
3.添加
tomcat ALL=(ALL) NOPASSWD: ALL
4.chmod u-w /etc/sudoers
5.usermod -s /bin/bash tomcat 添加shell登录
6.su - tomcat
7.sudo ansible -m ping all试下sudo能不能免密执行