zoukankan      html  css  js  c++  java
  • SCP实现无需密码传输文件

    SCP概述

    Linux为我们提供了两个用于文件copy的命令,一个是cp,一个是scp,但是他们略有不同

    CP ----- 主要是用于在同一台电脑上,在不同的目录之间来回copy文件 
    SCP --- 主要是在不同的Linux系统之间来回copy文件 

    下面我们就主要讲一下SCP命令的基本用法:

    scp 传输文件路径 用户名@传输文件目标IP:目标路径(可以指定新的文件名)
    

    在Linux环境下,两台主机之间传输文件一般使用scp命令,通常用scp命令通过ssh获取对方linux主机文件的时候都需要手动输入密码确认。

    最近的一个项目中就遇到了这个问题,利用os模块的os.system()来执行系统命令来完成定时任务,我们不可能手动输入密码,而应该实现无密传输,我们可以通过建立信任关系,可以实现不输入密码而进行数据传输。

    假设俩个服务器A:192.168.111.100,服务器B:192.168.111.101之间进行数据传输:

    1、在主机A上执行如下命令来生成配对密钥: (按照提示操作,注意,不要输入passphrase,一直回车完成)

    ssh-keygen -t rsa 
    

    2、查看B主机上面是否存在authorized_keys文件,如果没有此文件, 将A主机.ssh 目录中的 id_rsa.pub 文件复制到 主机B 的 ~/.ssh/ 目录中,并改名为  authorized_keys

    scp .ssh/id_rsa.pub 192.168.111.101:/root/.ssh/authorized_keys
    

    如果B主机上存在authorized_keys文件,则需注意,这个文件可以包含多个SSH验证信息,这时先把id_rsa.pub文件传到B主机的/root/.ssh目录下面(重新命名文件名),然后再利用 cat >>命令将验证文件内容附加上去

    比如复制到scp .ssh/id_rsa.pub 192.168.111.101:/root/.ssh/a.pub
    
    然后执行cat ~/.ssh/a.pub >> ~/.ssh/authorized_keys
    
  • 相关阅读:
    LeetCode
    LeetCode
    一篇真正教会你开发移动端页面的文章(一)
    移动端页面开发资源总结
    Vue 模板
    使用 concurrently 并行地运行多个命令(同时跑前端和后端的服务)
    值得H5前端学习的60个JS插件(含DEMO演示)
    解读浮动闭合最佳方案:clearfix
    JavaScript 如何工作的: 事件循环和异步编程的崛起 + 5 个关于如何使用 async/await 编写更好的技巧
    JavaScript 运行机制详解:再谈Event Loop
  • 原文地址:https://www.cnblogs.com/luxiaojun/p/6428186.html
Copyright © 2011-2022 走看看