问题:Jenkins默认使用jenkins用户去启动,jenkins用户并没有
权限去
执行ssh免密登陆,所以导致执行失败 注:配置linux双机互信后,jenkins也需要将公钥加入到目标机器,才能达到shell脚本中scp免密传输的条件 一、验证登录 1、切换jenkins用户 # su jenkins 切换后还是root账号 2、分析解决: 2.1 应该是/etc/passwd文件中的/bin/bash被yum安装的时候变成了/bin/false # vim /etc/passwd jenkins:x:990:988:Jenkins Automation Server:/var/lib/jenkins:/bin/false( bash)将bin/false改为/bin/bash 再次执行切换 # su jenkins bash-4.1$ 2.2 结果命令提示符的用户名不是jenkins而变成了 bash-4.1$,原因是在安装jenkins时,jenkins只是创建了jenkins用户,并没有为其创建home目录 # vim ~/.bash_profile 在文件的最后添加 export PS1='[\u@\h \W]\$',执行文件使
修改项起作用 # source ~/.bash_profile 验证是否成功 # su jenkins 二、为jenkins系统用户开启免密登录 1、在Jenkins的使用过程中,如果在脚本中使用到sudo命令,有可能出现如下所示的错误: sudo: no tty present and no askpass program specified 这是因为Jenkins服务器在执行sudo命令时的上下文有误,导致这个命令执行的异常。 2.1 解决方法: # sudo visudo 在文件末尾加上jenkins ALL=(ALL) NOPASSWD: ALL 2.2 重启jenkins,测试 # su jenkins # sudo su -s /bin/bash jenkins 测试成功,jenkins免密登录成功。 PS:如果误 *** 作修改了/etc/sudoers的权限来修改上述文件,则会导致如下所示的错误: sudo :/etc/sudoers is world writable sudo : no valid sudoers source found, quitting sudo : unable to initialize poling plugin 这是Linux的一种保护机制。因此,如果出现上述误 *** 作,则需要执行如下命令来解决: $ pkexec chmod 0440 /etc/sudoers 三、jenkins用户开通ssh免密登录 1、安装ssh # yum install ssh 1.1 将ssh服务设置开机自启 # sudo systemctl enable sshd 1.2 启动ssh # sudo systemctl start sshd 2、生成jenkins用户秘钥证书 # su jenkins # ssh-keygen -t rsa 2.1 查看是否生成成功 # /var/lib/jenkins/.ssh/ # ls 3、将公钥传输到目标linux系统 ssh-copy-id -i /var/lib/jenkins/.ssh/id_rsa.pub root@目标ip:path------------------------------------------------------------------------------------------ 参考:https://blog.csdn.net/weixin_43840640/article/details/90371472假设A,B两台服务器,现在需要从A服务器scp一个文件到B服务器
命令如下:
scp filename root@B_ip:path
这时需要输入B服务器的root的密码
如果想要设置直接scp不输入密码只需将B加入到A服务器的信任中即可
在A服务器中输入
还要把.ssh文件夹的权限修改为700。如果你自己使用mkdir .ssh建立了.ssh文件夹,那么一定要修改文件夹权限。如果你以前运行过ssh或scp命令,那么系统会自动为你建立一个权限为700的.ssh文件夹。所以,有的人配置好后,就能免密码登陆,而有的人就不能成功。另外,不要忘记修改authorized_keys文件的权限,可以修改为600或644都可(去掉Group和Other的写权限)。
评论列表(0条)