jenkins rsync总是需要输入密码以及提示Host key verification failed

注:本文为自己学习使用,如有问题欢迎在评论区留言~么么哒

一、rsync远程传输避免密码输入

每次rsync远程传输时都需要输入用户在远程机器上的密码,这样导致无法在后台自动运行rsync,可采用秘钥文件来替代人工输入密码的方式来解决。

第一步 在本地机器上使用ssh-keygen -t rsa 生成秘钥
(一路回车即可)
注意: 在提示输入key file path时,为避免覆盖已有的root帐户的id_rsa文件,将其存储到/usr/rsync_id_dsa 在提示输入文件密码时,直接按回车,采用空密码 最后生成了两个文件,分别存储私钥和公钥

 [root@xxxx ~]$ ssh-keygen -t rsa
 Generating public/private rsa key pair.
 Enter file in which to save the key (/root/.ssh/id_rsa): /usr/rsync_id_dsa
 Enter passphrase (empty for no passphrase):   //输入空
 Enter same passphrase again:   //输入空
 Your identification has been saved in /usr/rsync_id_dsa.
 Your public key has been saved in /usr/rsync_id_dsa.pub.
 
 注意: 在提示输入key file path时,为避免覆盖已有的root帐户的id_rsa文件,将其存储到/usr/rsync_id_dsa 在提示输入文件密码时,直接按回车,采用空密码 最后生成了两个文件,分别存储私钥和公钥

第二步 将本地机器上的公钥传送到远端机器对应账户的.ssh目录下 (以csdn为例)

 $ scp /usr/rsync_id_dsa.pub root@171.69.201.209:/home/csdn/.ssh

第三步 在远程机器上将得到的公钥导入对应账号的authorized_keys文件中 (以csdn为例)

 $ cd /home/csdn/.ssh
 $ cat rsync_id_dsa.pub >> authorized_keys  # 使用 >> 防止覆盖 这样可以实现多个客户端的免密码登录
 $ chown csdn:csdn authorized_keys  # 不是必须

设置完成后,每次使用rsync时,添加 -i 参数 就可以避免每次输入密码了

1 $rsync -e "ssh -i /usr/rsync_id_dsa" /tmp/testfile csdn@remotehost:/tmp/  
2 #rsync -av -e  "ssh -i /usr/rsync_id_dsa" /orcl/20160926/ csdn@173)">61.132.173)">54.173:/usr/test

二## 提示Host key verification failed

1、第一步

1、 在 .ssh目录下添加config文件,cd ~/.ssh 键入

StrictHostKeyChecking no
UserKnownHostsFile /dev/null
2、删除 .ssh/know_hosts中对应ip的相关rsa信息

2、如果"Permission denied

首先在服务器本地测试ssh 127.0.0.1,如果可以那就是防火墙的问题。网上很多解决方法,这里不在写,很好解决。

若本地连接有问题,首先打开配置文件sshd_config寻找问题(vim /etc/ssh/sshd_config)。这里简单总结几个必须要修改的配置:

RSAAuthentication yes
PubkeyAuthentication yes #这两项为打开公钥模式
AuthorizedKeysFile .ssh/authorized_keys #配置公钥记录文件
PasswordAuthentication yes #打开密码验证模式

具体:
1、chmod 600/etc/ssh/sshd_config
2、vi /etc/ssh/sshd_config
3、将下面配置的注释放开:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
4、vi authorized_keys
追加了本机的id_rsa.pub内容
id_rsa.pub目录:~/.ssh/id_rsa.pub

3、如果不能切换到jenkins

由于某种原因,你想login为jenkins,你可以这样做: sudo su -s /bin/bash jenkins
如果想要切换到root: su -
你需要修改 / etc / passwd 允许用户jenkins login:应该有类似/ bin / bash或/ bin / sh ,当然不是/ bin / false在行尾。如果不是你需要修改

4、现在可以具体操作了

1、chmod 600 /etc/sudoers
2、visudo
添加以下内容:
root ALL=(ALL) ALL # 原有的
jenkins ALL=(ALL) NOPASSWD:/usr/bin/ssh,/usr/bin/rsync # 新增的

中间的空隙不是空格,而是tab,命令和命令之间要用逗号,保存退出后,将权限改为440,而不是400,最后用visudo -c检查语法是否出错.

3、# 给jenkins生成密钥对:在jenkins用户下

ssh-keygen -t rsa

ssh-copy-id -i ~/.ssh/id_rsa.pub root@slave主机ip

ssh root@slave主机ip
如图:
在这里插入图片描述
4、 此时是完成了第二步,但还没有操作第一步,在文件末尾添加一行,就这么一行就有很多要注意的地方,首先修改文件权限为600,然后用viduso去修改文件,中间的空隙不是空格,而是tab,命令和命令之间要用逗号,保存退出后,将权限改为440,而不是400,最后用visudo -c检查语法是否出错.
visudo后加进去这些:

root ALL=(ALL) ALL # 原有的
jenkins ALL=(ALL) NOPASSWD:/usr/bin/ssh,/usr/bin/rsync # 新增的
在这里插入图片描述

5、补充:
需要保证jenkins中使用的是jenkins用户:
进去jenkins——》Manage Jekins——》Status Information——》System Information——》user.name 为jenkins表示使用的jenkins用户

5、补充小知识

配置SSH免密码登录
(1)输入“ssh-keygen -t rsa”,接着按三次“Enter”键。

生成私有密钥id_rsa和公有密钥id_rsa.pub两个文件。
ssh-keygen用来生成RSA类型的密钥以及管理该密钥,参数“-”用于指定要创建的SSH密钥的类型为RSA
在这里插入图片描述

(2)用 ssh-copy-id 将公钥复制到远程机器中。

ssh-copy-id -i /root/.ssh/id_rsa.pub master

//依次输入yes, root用户的密码

ssh-copy-id -i /root/.ssh/id_rsa.pub slave1

//依次输入yes, root用户的密码

ssh-copy-id -i /root/.ssh/id_rsa.pub slave2

//依次输入yes, root用户的密码

ssh-copy-id -i /root/.ssh/id_rsa.pub slave3

//依次输入yes, root用户的密码

(3)验证SSH是否能够无密钥登录

在master下分别输入:ssh slave1、ssh slave2、ssh slave3

如图所示即配置SSH免密码登录成功。
在这里插入图片描述
常见问题的解决途径:

1.用 ssh-copy-id 将公钥复制到远程机器中时,master 应为自己的主机名。

查看自己主机名为: hostname

2.查看是否IP地址有错误:

(1)命令"ssh root@主机或节点的IP地址"(主机用主机IP,节点用节点IP)

例如我个人的主机IP:ssh root@192.168.80.130

(2)命令"vi /etc/hosts"检查是否之前写错主机和各个节点的IP,如有错误尽快修改正确的对应IP。

3.若最终没发现问题,无法解决,建议清楚所有的节点和主虚拟机,重新开始配置,文件改写需谨慎,写错不易找出问题

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用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操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值