快速搭建rsync免密传输文件服务器

rsync 相较于 scp 免密情况下的传输文件、目录,可谓之安全高效、实用性高。如下,直接上步骤!

1、环境介绍

  • 一台服务器,两台客户端机器测试下载,共三台机器
  • 同一网段,两两相互ping通
主机 IP
server1 172.25.20.1
server2 172.25.20.2
server3 172.25.20.3

2、搭建服务器

  • 安装
# yum install -y  rsync
  • 编辑配置文件

为方便管理 ,创建 rsyncd 服务目录

# mkdir  /etc/rsyncd/

为其创建配置文件,包含一个全局参数和一个或多个模块参数

[root@server1 ~]#  vim  /etc/rsyncd/rsyncd.conf

## 全局参数
port = 873              
use chroot = yes
max connections = 200
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log

## 模块参数(服务器端通过指定 IP 限制客户端传输文件功能)
[LOL]
# [LOL],模块名,客户端传输文件时使用
uid = root
# 传输文件时守护进程应该具有的uid,默认值为nobody
gid = root
# 传输文件时守护进程应该具有的gid,默认值为nobody
path = /data/LOL/
# 此模块指定的根路径
read only  = no
# 该选项设定是否允许客户上传文件,no 表示可以读写,默认为 yes
secrets file = /etc/rsyncd/rsyncd.secrets
# 指定一个包含定义用户名:密码对的文件
hosts allow = 172.25.20.2
# 白名单 ip ,指定授权访问 ip

## 模块参数(服务器端通过指定 IP 限制客户端传输文件功能)
[CS]
# [CS],模块名,客户端传输文件时使用
uid = root
# 传输文件时守护进程应该具有的uid,默认值为nobody
gid = root
# 传输文件时守护进程应该具有的gid,默认值为nobody
path = /data/CS/
# 此模块指定的根路径
read only  = no
# 该选项设定是否允许客户上传文件,no 表示可以读写,默认为 yes
secrets file = /etc/rsyncd/rsyncd.secrets
# 指定一个包含定义用户名:密码对的文件
hosts allow = 172.25.20.3
# 白名单 ip ,指定授权访问 ip

## 模块参数(服务器端通过 密码 限制客户端传输文件)
[CF]
# [CF],模块名,客户端传输文件时使用
uid = root
# 传输文件时守护进程应该具有的uid,默认值为nobody
gid = root
# 传输文件时守护进程应该具有的gid,默认值为nobody
path = /data/CF/
# 此模块指定的根路径
read only  = no
# 该选项设定是否允许客户上传文件,no 表示可以读写,默认为 yes
secrets file = /etc/rsyncd/rsyncd.secrets
# 指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。
auth users =root
# auth users 定义root

上述参数,通过三个模块对比说明服务端对客户端的不同方式限制。
server1服务器限制 LOL 模块仅对 ip 172.25.20.2 开放,且无密码限制;
server1服务器限制 CS 模块仅对 ip 172.25.20.3 开放,且无密码限制;
server1服务器限制 CF 模块对所有 ip 开放 ∗ ∗ b u t , 有 密 码 限 制 ! ∗ ∗ \color{#FF0000}{**but,有密码限制!**} but,
建议读者选 ip 或 密码限制 一种即可。

  • 编辑密码文件
## 用户名:密码
[root@server1 ~]#  echo 'root:redhat' > /etc/rsyncd/rsyncd.secrets
## 设定权限 600
[root@server1 ~]#  chmod 600 /etc/rsyncd/rsyncd.secrets
  • 创建服务器端测试文件
[root@server1 ~]# mkdir -p /data/LOL/lol 
[root@server1 ~]# touch /data/LOL/lol/test_lol{1..5}
[root@server1 ~]# mkdir -p /data/CS/cs 
[root@server1 ~]# touch /data/CS/cs/test_cs{1..5}
[root@server1 ~]# mkdir -p /data/CF/cf 
[root@server1 ~]# touch /data/CF/cf/test_cf{1..5}
  • 指定配置文件启动
[root@server1 ~]#  /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf

3、客户端测试验证

测试 LOL 模块

此模块指定 ip 开放传输文件功能

  • server2 可 ping 通 server1
    快速搭建rsync免密传输文件服务器_第1张图片
  • server2 下载 server1 中 LOL 模块 数据 到 /mnt 目录下
[root@server2 ~]# yum install -y  rsync
[root@server2 ~]# rsync -av  172.25.20.1::LOL/lol/* /mnt

快速搭建rsync免密传输文件服务器_第2张图片

  • server3 也可 ping 通 server1,却 无法下载 LOL 模块数据
[root@server3 ~]# yum install -y  rsync

快速搭建rsync免密传输文件服务器_第3张图片

测试 CS 模块

此模块也是指定 ip 开放传输文件功能

  • server2 可 ping 通 server1 却 无法下载 CS 模块数据
    快速搭建rsync免密传输文件服务器_第4张图片
  • server3 可 ping 通 server1,也可以 下载 CS 模块数据
    快速搭建rsync免密传输文件服务器_第5张图片

测试 CF 模块

此模块虽然放开所有的可ping通 ip ,但通过 auth users 来限制 客户端 使用 密码 传输功能,因此客户端拿到密码即可。

server2、server3 均无 密码 的情况下
  • server2 可 ping 通 server1,需要密码验证,仍然无法下载
    快速搭建rsync免密传输文件服务器_第6张图片
  • server3 可 ping 通 server1,也是需要密码验证,仍然无法下载
    快速搭建rsync免密传输文件服务器_第7张图片
server2、server3 获得 密码 的情况下(该密码是上述server1中配置密码文件的密码)
  • server2 获取密码后,即可进行文件传输
[root@server2 ~]# echo 'redhat'  >  /etc/rsyncd.passwd
[root@server2 ~]# chmod 600 /etc/rsyncd.passwd 
[root@server2 ~]# rsync -av  172.25.20.1::CF/cf/*  --password-file=/etc/rsyncd.passwd /mnt/

快速搭建rsync免密传输文件服务器_第8张图片

  • server3 获取密码后,即可进行文件传输
[root@server3 ~]# echo 'redhat'  >  /etc/rsyncd.passwd
[root@server3 ~]# chmod 600 /etc/rsyncd.passwd 
[root@server3 ~]# rsync -av  172.25.20.1::CF/cf/*  --password-file=/etc/rsyncd.passwd /mnt/

快速搭建rsync免密传输文件服务器_第9张图片

你可能感兴趣的:(Linux系统,Shell)