SCP不用密码传输文件
2023-03-15 23:20:08 时间
有时候为了让两台机器之间实现文件同步,可以使用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
这一步要输入三个参数
- 存储公私钥的文件夹位置,默认为/root/.ssh/,文件名默认是id_rsa和id_rsa.pub
- 使用该公私钥时是否需要密码,默认不需要密码
- 再次确认是否需要密码
推荐一路回车,选择默认即可 执行完毕后,看一下,多了两个文件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的信任机制按步骤反过来就可以。
相关文章
- 金融服务领域的大数据:即时分析
- 影响大数据、机器学习和人工智能未来发展的8个因素
- 从0开始构建一个属于你自己的PHP框架
- 如何将Hadoop集成到工作流程中?这6个优秀实践必看
- SEO公司使用大数据优化其模型的5种方法
- 关于Web Workers你需要了解的七件事
- 深入理解HTTPS原理、过程与实践
- 增强分析:数据和分析的未来
- PHP协程实现过程详解
- AI专家:大数据知识图谱——实战经验总结
- 关于PHP的错误机制总结
- 利用数据分析量化协同过滤算法的两大常见难题
- 怎么做大数据工作流调度系统?大厂架构师一语点破!
- 2019大数据处理必备的十大工具,从Linux到架构师必修
- OpenCV中的KMeans算法介绍与应用
- 教大家如果搭建一套phpstorm+wamp+xdebug调试PHP的环境
- CentOS下三种PHP拓展安装方法
- Go语言HTTP Server源码分析
- Go语言HTTP Server源码分析
- 2017年4月编程语言排行榜:Hack首次进入前五十