Linux scp 免密码传输文件

五迷三道 提交于 2019-12-03 21:45:51

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,就不在需要输入密码验证了。

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


 

 

【额外说明】

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

如有不清楚二者异同点的同学,可以参考博文:

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!