ssh批量分发:
在nfs-server服务器(分发机)上产生秘钥:(创建一个新用户liming)
ssh-keygen -t dsa (/home/liming/.ssh/id_dsa 该目录存放着生成的秘钥)
[liming@nfs-server ~]$ ls -l .ssh/
total 8
-rw-------. 1 liming liming 668 Dec 2 15:44 id_dsa (钥匙)
-rw-r--r--. 1 liming liming 608 Dec 2 15:44 id_dsa.pub (锁)
default port: (将锁发送给其他默认端口的服务器)
ssh-copy-id -i .ssh/id_dsa.pub liming@backup-server
port:52113 (将锁分发给其他指定该端口的服务器)
ssh-copy-id -i id_dsa.pub "-p 52113 [email protected]"
其他服务器也是如此操作,秘钥认证之后,nfs服务器这时候到back,lamp,lnmp服务器都不用密码了.
(例:此时从nfs看back服务器的网卡<liming用户>: ssh -p22 liming@backup-server /sbin/ifconfig ens33)
然后分发文件:
scp -P22 hosts liming@backup-server:~ (将本地的hosts文件传到 back服务器的家目录下)
批量分发:(在nfs服务器写脚本)
优化ssh配置文件:/etc/ssh/sshd_config (如果ssh传输慢)
加入: PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no
vim fenfa.sh
#!/bin/bash
. /etc/init.d/functions #调用函数库(下面action的使用)
#如果没有参数,做出判断并给出提示:
if [ $# -ne 1 ]
then
echo "USAGE:$0 {FILENAME|DIRNAME}"
exit 1
fi
for n in backup-server lamp01 lnmp02
do
scp -P22 -r $1 liming@$n:~ &>/dev/null
if [ $? -eq 0 ]
then
action "fenfa $1 ok" /bin/true
else
action "fenfa $1 ok" /bin/false
fi
done
~
测试: sh fenfa.sh hosts
vim view.sh
#!/bin/bash
. /etc/init.d/functions
if [ $# -ne 1 ]
then
echo "USAGE:$0 COMMAND"
exit 1
fi
for n in backup-server lamp01 lnmp02
do
echo ========$n========
ssh -P22 oldgirl@$n $1
done
测试:
sh view.sh "/sbin/ifconfig ens33"
sh view.sh "cat /etc/redhat-release"