美文网首页
Linux下的SCP无密码拷贝文件

Linux下的SCP无密码拷贝文件

作者: kto | 来源:发表于2017-08-08 18:37 被阅读0次

在Linux服务器之间自动拷贝文件的方法。主要使用了基于ssh的并且安全的文件copy技术——scp。这种方法安全并且便捷,无需输入登录密码

我们先设定一下场景和需求:每天凌晨4点30分,服务器A的文件自动同步到服务器B。我们可以认为服务器A是服务端,服务器B是客户端。下面演示如何达到这个目标。

①在客户端(服务器B)生成一对公钥和秘钥。使用ssh-keygen -t rsa生成,一路回车即可;

②进入秘钥文件夹查看文件。其中id_rsa.pub是公钥,id_rsa是私钥;

进入文件夹           cd ~/.ssh

③打开id_rsa.pub文件,并把它的内容拷贝到服务端(服务器A)的authorizedkeys文件中;或者直接使用ssh-copy-id命令把idrsa.pub拷贝到服务器A中。如下命令,按提示输入登录密码即可拷贝。注意,假如服务器只能用SSH秘钥文件登录,则ssh-copy-id命令无法使用,只能编辑authorized_keys文件。

ssh-copy-id -i ~/.ssh/id_rsa.pub root@ip_address

④在客户端(服务器B)编写文件拷贝的脚本;

#!/bin/sh

#copy data from remote server. you should copy your client's id_rsa.pub content to the server's ~/.ssh/authorized_keys file

#this script run at client

scp -r root@x.xx.xxx.xxxx:/var/www/html/hellojammy/* /var/www/html/hellojammy/

exit 0;

其中,x.xx.xxx.xxxx是服务端(服务器A)的ip地址。这段脚本的作用是拷贝服务器B的/var/www/html/hellojammy/目录下的所有文件(包括子文件夹下的文件),到服务器A的/var/www/html/hellojammy/目录。脚本文件为scp_test.sh

⑤在客户端(服务器B)编写定时任务脚本,执行文件拷贝的命令。

1 //编辑定时任务

2 crontab -e

3  //添加定时任务

30 4 * * * /bin/sh /data/script/scp_test.sh > /data/script/logs/scp_test.log 2>&1

至此,完成!

相关文章

网友评论

      本文标题:Linux下的SCP无密码拷贝文件

      本文链接:https://www.haomeiwen.com/subject/chhxrxtx.html