SCP不用密码传输文件

时间:2022-07-23
本文章向大家介绍SCP不用密码传输文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

有时候为了让两台机器之间实现文件同步,可以使用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 

这一步要输入三个参数

  1. 存储公私钥的文件夹位置,默认为/root/.ssh/,文件名默认是id_rsa和id_rsa.pub
  2. 使用该公私钥时是否需要密码,默认不需要密码
  3. 再次确认是否需要密码

推荐一路回车,选择默认即可 执行完毕后,看一下,多了两个文件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的信任机制按步骤反过来就可以。