SSH 协议利用公私钥。
首先我们发送请求连接远程主机,主机会将自己的公钥返回。
然后,本地输入密码,通过远程主机的公钥对密码进行加密发送至远程主机。
最后远程主机通过自己的私钥进行解密,然后检查密码是否正确。
那么如果钓鱼wifi 什么的拦截到请求,比如第一步请求连接主机的时候被拦截,然后将自己的公钥返回,就能知道你的密码了。
所以当第一次连接某个远程主机的时候,会将主机的公钥展示出来,以便核对是否是真实想要连接的远程主机。
配置的免密登录的原理:
自己电脑生成公私钥,将公钥放到远程服务器上,下次建立连接的时候远程服务器会返回字符串,自己本地私钥加密之后
如果远程主机能通过公钥解密正常,说明连接被信任,就不用输入密码了。
附免密配置:https://www.linuxidc.com/Linux/2016-09/135533.htm
当然也可以通过ssh对远程主机发送一些命令进行操作。
!/bin/bash
echo "send_file:$1"
#scp -P 20040 "$1" root@218.23.69.10:/root/
for line in `cat "$2"`
do
#echo $line
port=`echo $line | cut -d : -f 2`
host=`echo $line | cut -d : -f 1`
#echo $port
#echo $host
echo "to ===> $line"
scp -P $port "$1" root@$host:/root/
echo "to ===> $line end!"
#ssh root@$host -p $port "mv test2.txt text223.txt"
ssh root@$host -p $port "sh deploy-$3-spider.sh ; reboot"
echo "$line ===> deploy done!"
done