SSH祕鑰分發、檔案分發、批量執行命令
阿新 • • 發佈:2018-11-01
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 |
- 首先確保aaa-服務端可以ping通bbb客戶端與ccc客戶端
[[email protected] ~]# 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
[[email protected] ~]# 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
[ [email protected] ~]#
- 將aaa服務端的公鑰發給bbb客戶端與ccc客戶端確保可以祕鑰登陸
- 以下均在aaa服務端執行
//生成lss使用者的祕鑰
[[email protected] .ssh]$ ssh-keygen -t rsa -C lss
//將公鑰分發到bbb客戶端
[[email protected] .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]168.1.5
//將公鑰分發到ccc客戶端
[[email protected] .ssh]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
- 執行指令碼實現檔案分發、批量執行命令
- 建立批量執行命令的指令碼
[[email protected] 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 [email protected]$IP."$i" -p"$Port" "$Command"
done
- 在bbb客戶端與ccc客戶端批量執行ls命令
[[email protected] 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
[[email protected] 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 [email protected]$IP."$i":$DirFile
done
- 將aaa服務端的檔案ssh-command.sh批量分發到bbb客戶端與ccc客戶端
[[email protected] 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
[[email protected] command-file]$