1.先确保自己的服务器~目录下有.ssh文件夹。
通过
cd ~/.ssh
命令查看有没有 如果没有执行
ssh localhost
命令,
然后输入自己的密码就会生成.ssh文件。如果还是没有.ssh文件夹可以 执行
ssh-keygen -t rsa
试试看。
2.进入hosts文件添加需要发送的服务器ip 和域名映射
vim /etc/hosts
#在文件末尾追加其他几台服务器以及映射别名
xxx.xxx.xxx.xxx name1
xxx.xxx.xxx.xxx name2
3.生成密钥和公钥:执行
ssh-keygen -t rsa
命令,一直按回车
4.进入到.ssh文件夹执行
ssh-copy-id -i id_rsa.pub root@name01
命令,
目的是将本机公钥给这个服务器然后就可以进行免密登录,
随后需要你输入name01这个服务器的密码就登录成功了。之后远程登录可以使用 ssh nam01(远程免密登录主要是为了传送文件不需要输入密码,Crtl+D退出远程登录)
给自己免密登录:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
5.我们创建一个用于传输的脚本文件放在这个目录下 /shell/send.sh 文件名和目录随便自己起
//创建shell目录
mkdir /shell
//进入到这个目录
cd /shell
//创建这个send.sh文件并进入编辑
vim send.sh
填入如下代码:
#!/bin/bash
if [ $# -lt 2 ]
then
echo "please input 2 agrs : source and dest path"
exit 0
fi
#name01、name02就是我们在hosts文件中设置的目标服务器
SERS="name01 name02"
echo "start to scp distribute : $1 ..."
for i in $SERS
do
if [ $i != $HOSTNAME ]
then
echo -n "---- $i ---- "
if [ -f $1 ]
then
CMD=`scp -P 22 $1 root@$i:$2`
elif [ -d $1 ]
then
CMD=`scp -P 22 -r $1 root@$i:/$2`
fi
echo ok
fi
done
6. 开始传送文件:命令格式如
bash 脚本存放位置 需要传送到文件或者文件夹 传递到目标主机中的位置
bash /shell/send.sh /opt/software/ /opt