SSH秘钥分发、文件分发、批量执行命令

版权声明:©来自CSDN博客作者"李在奋斗"的原创作品,如需转载,请注明出处 https://blog.csdn.net/qq_31725371/article/details/83019523

SSH秘钥分发、文件分发、批量执行命令

要求使用同一用户lss,实现A机器从本地分发数据到B、C的过程不需要输入密码,且可以批量在B、C主机上执行命令

IP 角色 用户
192.168.1.4 aaa-服务端 lss
192.168.1.5 bbb-客户端 lss
192.168.1.6 ccc-客户端 lss
  1. 首先确保aaa-服务端可以ping通bbb客户端与ccc客户端
[root@aaa-server ~]# ping bbb-server
PING bbb-server (192.168.1.5) 56(84) bytes of data.
64 bytes from bbb-server (192.168.1.5): icmp_seq=1 ttl=64 time=1.64 ms
[root@aaa-server ~]# ping ccc-server
PING ccc-server (192.168.1.6) 56(84) bytes of data.
64 bytes from ccc-server (192.168.1.6): icmp_seq=1 ttl=64 time=2.17 ms
[root@aaa-server ~]# 

  1. 将aaa服务端的公钥发给bbb客户端与ccc客户端确保可以秘钥登陆
  • 以下均在aaa服务端执行
//生成lss用户的秘钥
[lss@aaa-server .ssh]$ ssh-keygen -t rsa -C lss

//将公钥分发到bbb客户端
[lss@aaa-server .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
//将公钥分发到ccc客户端
[lss@aaa-server .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]


  1. 执行脚本实现文件分发、批量执行命令
  • 创建批量执行命令的脚本
[lss@aaa-server command-file]$ vim ssh-command.sh
#!/bin/bash
if [ $# -ne 1 ];then
        echo "USAGE $0:{Please Command}"
        exit 1
fi

Command="$1"
IP="192.168.1"
User=lss
Port=22

for i in 5 6
do
        echo "###Server IS $IP."$i"###"
        /usr/bin/ssh $User@$IP."$i" -p"$Port" "$Command"
done


  • 在bbb客户端与ccc客户端批量执行ls命令
[lss@aaa-server command-file]$  sh ssh-command.sh ls
###Server IS 192.168.1.5###
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
###Server IS 192.168.1.6###
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
[lss@aaa-server command-file]$ 

  • 创建文件批量分发脚本distributeFile.sh
#!/bin/bash
if [ $# -ne 2 ];then
        echo "USAGE $0:{LocalFile|RemoteFile}"
        exit 1
fi

File1="$1"
DirFile="$2"
IP=192.168.1
User=lss
Port=22

for i in 5 6
do
        echo "###Server IS $IP."$i"###"
        /usr/bin/scp -rp -P"$Port" $File1 $User@$IP."$i":$DirFile
done

  • 将aaa服务端的文件ssh-command.sh批量分发到bbb客户端与ccc客户端
[lss@aaa-server command-file]$ sh distributeFile.sh ssh-command.sh /tmp/
###Server IS 192.168.1.5###
ssh-command.sh                                      100%  229     0.2KB/s   00:00    
###Server IS 192.168.1.6###
ssh-command.sh                                      100%  229     0.2KB/s   00:00    
[lss@aaa-server command-file]$

猜你喜欢

转载自blog.csdn.net/qq_31725371/article/details/83019523