zoukankan      html  css  js  c++  java
  • Linux scp 免密码 传输文件

    Linux scp 免密码 传输文件


    背景介绍

    最近项目是集群化部署(由 node1,node2,node3 三台 CentOS 7.4 的虚拟机构成)。

    但是,涉及到跨机器同步文件的问题,想通过写shell文件实现,用 crontab 设置定时任务,定时执行改脚本。

    由于每次都需要输入密码,导致定时任务没法正常工作,因此,需要三台机器之间可以免密码互相访问。


    建立SSH的信任关系

    以实现 node1 免密码给 node2 scp传输文件为例说明,需要如下几个步骤:

    1、生成 node1 的秘钥(私钥和公钥)

    1)进入 node1 的 /root/.ssh 目录

    cd /root/.ssh/

    2)执行如下命令,生成公钥和私钥(此时,一路回车即可)

    ssh-keygen -t rsa

    其中,id_rsa 私钥id_rsa.pub 公钥。 

    2、将 node1 的 id_rsa.pub中的内容追加到 node2 的authorized_keys 认证文件中 

    1)将 node1 的公钥(id_rsa.pub)信息,输出到临时认证文件  authorized_keys_node1 中

    cat id_rsa.pub >authorized_keys_node1

    2)将 authorized_keys_node1 文件 scp 到 /root/.ssh/ 目录下

    scp authorized_keys_node1 root@node2:/root/.ssh/

    3)登录到node2节点,进入 /root/.ssh目录

    cd /root/.ssh/

    4)将 node1 的公钥信息,追加到 node2 的认证文件(authorized_keys)中

    cat authorized_keys_node1 >>authorized_keys

    至此,node1 到 node2 的信任关系建立好了,node1 scp文件到 node2,就不在需要输入密码验证了。

    其他机器之间的信任关系,如有需要,可以依此方法进行配置。


     

    【额外说明】

    1、上面用到了 Shell 的 > 和 >>,因为使用场景不同。

    如有不清楚二者异同点的同学,可以参考博文:https://www.cnblogs.com/miracle-luna/p/11809725.html

    2、文中提到的 id_rsa 和 id_rsa.pub 中的 rsa,是指的 RSA加密算法。

    RSA加密算法是一种非对称加密算法。在公开密钥加密电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

    对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。

  • 相关阅读:
    一种线程安全的handle
    基于数组的无锁队列(译)
    distri.lua的web运维工具
    distri.lua重写开源手游服务器框架Survive
    99 Lisp Problems 二叉树(P54~P69)
    99 Lisp Problems 列表处理(P1~P28)
    TSPL学习笔记(4):数组相关练习
    TSPL学习笔记(3):排序算法练习
    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 热更新Live2D
    用ECMAScript4 ( ActionScript3) 实现Unity的热更新 -- 使用FairyGUI (二)
  • 原文地址:https://www.cnblogs.com/miracle-luna/p/11809746.html
Copyright © 2011-2022 走看看