有时候为了让两台机器之间实现文件同步,可以使用scp来传输文件,但是scp传输文件时候需要输入密码,这样一来要想实现自动化同步文件就没法实现。所以要想实现自动化同步文件需要去掉scp输入密码这一环节。
方法一:使用sshpass 使用yum安装sshpass
yum install sshpass
scp结合sshpass带上密码传输文件
sshpass -p password scp /data/scripts/getData.log root@X.X.X.X:/data/python-scripts/inspector/AccountInspector/otherInspector
但是这种方式有个缺点,会曝露明文密码。
方法二:创建SSH信任机制 主机A要想通过无密码的SCP方式将文件传输到主机B,主机A得先获得主机B的信任。所谓信任机制可以这样抽象的理解,主机A将自己的某一个证件放到主机B那儿,当有一个请求发到主机B的时候,主机B用这个证件来判断是不是主机A,如果是主机A,则可以直接传输文件,否则要求输入密码才能传输。而这个证件就是主机A上的公钥。 获取A的公钥:
cd /root/.ssh/
执行
ssh-keygen -t rsa
这一步要输入三个参数
推荐一路回车,选择默认即可 执行完毕后,看一下,多了两个文件id_rsa和id_rsa.pub。接下来只需要将id_rsa.pub中的内容复制到主机B中的authorized_keys文件中。 执行
cat id_rsa.pub >authorized_keys2
使用scp将authorized_keys2传输到主机B的/root/.ssh/ 目录下,如果主机B存在authorized_keys文件,则追加到authorized_keys里面
cat authorized_keys2 >>authorized_keys
否则直接创建
cat authorized_keys2 >authorized_keys
备注:要想在主机B中添加对多台机器的信任,只需要将其它机器的公钥内容追加到主机B的authorized_keys文件里面即可。
这样A到B的信任机制已经建立,再次执行SCP指令时,已经不需要输入密码了,如果还想建立B到A的信任机制按步骤反过来就可以。