前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SCP不用密码传输文件

SCP不用密码传输文件

作者头像
胡大
修改2021-11-23 14:32:52
1.4K0
修改2021-11-23 14:32:52
举报

有时候为了让两台机器之间实现文件同步,可以使用scp来传输文件,但是scp传输文件时候需要输入密码,这样一来要想实现自动化同步文件就没法实现。所以要想实现自动化同步文件需要去掉scp输入密码这一环节。

方法一:使用sshpass 使用yum安装sshpass

代码语言:javascript
复制
yum install sshpass

scp结合sshpass带上密码传输文件

代码语言:javascript
复制
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的公钥:

代码语言:javascript
复制
cd /root/.ssh/

执行

代码语言:javascript
复制
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文件中。 执行

代码语言:javascript
复制
cat id_rsa.pub >authorized_keys2

使用scp将authorized_keys2传输到主机B的/root/.ssh/ 目录下,如果主机B存在authorized_keys文件,则追加到authorized_keys里面

代码语言:javascript
复制
cat authorized_keys2 >>authorized_keys

否则直接创建

代码语言:javascript
复制
cat authorized_keys2 >authorized_keys

备注:要想在主机B中添加对多台机器的信任,只需要将其它机器的公钥内容追加到主机B的authorized_keys文件里面即可。

这样A到B的信任机制已经建立,再次执行SCP指令时,已经不需要输入密码了,如果还想建立B到A的信任机制按步骤反过来就可以。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档