# 需求
+ 偶尔需要将备份的东西传输到异地备用机上,而且要求加密传输
# 预备环境
+ 准备一台Linux作为备用机服务器,建议为CentOS 7最新版本
+ 安装rsync组件,不赘述
+ 在备用服务器机上放非root用户,例如,codebackup ;且设置安全强度高的密码。后续利用免密SSH登录,此用户密码在后期实际较少使用,所以,可以设置长密码
# 添加新用户
useradd codebackup
# 设置高安全强度密码
passwd codebackup
+ 在有备份需求的主机上,利用ssh-kengen -t ecdsa 生成用户的非对称密钥凭据,用于远程SSH免密登录,从而避免备份过程不能有效自动化
++ 继续在有备份需求的主机上利用ssh-copy-id命令,将已生成的公共凭据自动拷贝到远程主机
# 生成ecdas非对称凭据,包括密钥和公钥.一路回车操作即可
ssh-keygen -t ecdsa
# 拷贝公共凭据到远程备份主机
ssh-copy-id codebackup@remote
# 测试是否可以免密登录
ssh codebackup@remote
# 如果出现异常,需要查验远程备份主机相应目录和文件的权限。
# 一般手工建立目录和拷贝文件容易出现问题;建议使用ssh-copy-id
ll -A /home/codebackup/
## 确保为700的权限
.ssh
## 确保为600的权限,且具有id_ecdsa.pub的
ll /home/codebackup/.ssh/authorized_keys
# rsync远程传输对比
+ 通过remote ssh shell方式
+ 通过rsync daemon + ssh tunnel方式
+ 直接tcp 访问远程rsync daemon,不安全
+ 通过nginx等代理服务器实现tcp ssl安全访问,部署步骤较多,也没有充分利用已有Linux主机携带的安全机制
综合来对比来看,对于偶尔、间歇性且要求安全传输的备份需求来讲,使用remote ssh shell方式,可以在提供安全传输的基础上,避免长期启动rsync daemon后台服务,这样就可以减少暴露可访问端口,将更具安全性!
相关资料,可通过 man rsync 阅读“USING RSYNC-DAEMON FEATURES VIA A REMOTE-SHELL CONNECTION”章节。
# 最后使用rsync同步命令
# 通过ssh -l 指定远程ssh shell远程用户
rsync -av --progress -e "ssh -l codebackup" . codebackup@remote:~
PS: 建议使用不同的用户进行备份操作,这样利于安全隔离