服务器远程拷贝文件

使用情景描述:

有多台服务器A、B、C,每台服务器的程序每小时都生成大量的日志文件,日志处理程序部署在服务器A,服务器B和C生成的日志需要拷贝到远程服务器A上处理。那么B和C生成的日志文件如何以小时为单位拷贝到远程服务器上呢?
常用方法有ftp和scp,这里主要叙述scp(secure copy)的使用。

scp的使用

scp的命令格式如下:

scp local_file remote_username@remote_ip:remote_folder

使用scp命令,每次使用都需要手动输入远程主机用户remote_username的密码。但根据使用情景是要以shell脚本的方式来进行拷贝的crontab定时任务。如何使用shell脚本自动输入远程主机密码来执行scp命令?下面记录两种方式:

一.用expect 实现scp无密码拷贝

设置SSH,SCP不用输入密码
本地主机拷贝文件到远程主机

二.SSH建立密钥通道

1.在本地主机生成密钥对

ssh-keygen -t rsa

这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在~/.ssh/目录下

2.将公钥添加到远程主机的 authorized_keys 文件中

将文件上传到远程主机中

scp ~/.ssh/id_rsa.pub root@192.168.1.23:/root/

SSH到登陆到远程主机,将公钥追加到 authorized_keys 文件中

cat /root/id_rsa.pub >> /root/.ssh/authorized_keys

3.测试使用,无须输入密码可使用scp命令

posted @ 2015-01-05 18:24  cyonks  阅读(805)  评论(0编辑  收藏  举报