服务器远程拷贝文件
使用情景描述:
有多台服务器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