通过通过pssh和和sshpass工具实现一对多的免密登陆工具实现一对多的免密登陆+批量操作批量操作
需求:需求:
在一台服务器一台服务器A上实现对多台机器多台机器(SUT,被测机,被测机)的批量执行命令,发送文件
使用系统,工具:使用系统,工具:
CentOS 7
pssh(yum install pssh安装):用于批量执行操作,前提是已经配置好了ssh免密登录
sshpass(yum install sshpass安装):用于ssh登陆时自动输入密码
思路:思路:
服务器A上生成公钥,将公钥分发给所有SUT的test用户用户,使得所有SUT的test用户可以免密登陆
修改/etc/ssh/sshd_config配置文件,使得可以root用户登陆
服务器A将公钥分发给所有SUT的root用户用户,使得所有SUT的root用户可以免密登陆
发送服务器A指定目录下的文件到所有SUT
备注:之前也想过使用expect脚本,自动输入密码,来一个个传文件,但是感觉太慢了,主要还是想利用pssh的批量执行功
能,但它前提是配置免密登录,所以脚本的主要功能是配置免密登陆,再之后的批量传输文件就很简单了
遇到的问题:遇到的问题:
1.除了使用expect脚本和手动输入,如何使用命令生成公钥
ssh-keygen -f “/root/.ssh/id_rsa” -N “”
2.sshpass自动登陆时,面对口令登陆口令登陆除了使用expect脚本和手动输入,还有什么解决办法
ssh取消口令认证
3.ssh免密登陆失败
ssh原理
ssh免密登陆失败原因
4.pssh的使用时,存放ip的文件内容格式为uesr@ip,这样登陆test和root用户需要2个配置文件,如何只需要一个配置文件
使用-l参数指定用户,这样文件内容为ip即可
目录结构:目录结构:
ssh.sh test免密登陆+root免密登陆+发送文件
sshd_config.sh 修改ssh配置
ip.log SUT ip列表
SUT_File 目录,将其中文件发送到SUT
代码实现:代码实现:
ssh.sh:
#!/bin/bash
#清空配置
rm -rf /root/.ssh/*
echo "---------------------------------------------"
echo "--------------------clear--------------------"
echo "---------------------------------------------"
sleep 1
评论0