当前位置: 首页 > news >正文

从零开始的云计算生活——第二十天,脚踏实地,SSH与Rsync服务

目录

一.故事背景

二.SSH带外管理

1.概述

2. 配置文件

3.命令解析

4.登录方式配置

a.用户名密码登录

b.公钥验证登录

5.实操生成密钥对

三.Rsync+sersync实现数据实时同步

1.rsync概述

2.rsync运行原理

3.rsync部署

4.备份测试

配置备份目录

5.rsync+sersync 实现数据实时同步

1 数据同步原理

2 部署rsync+sersync

6.脚本编写

7.总结


一.故事背景

网络服务最后的内容,一个是SSH外带管理,一个是Rsync+sersync实现数据实时同步,其中用的最多的是后者,也要写一个相关脚本

二.SSH带外管理

1.概述

ssh服务,一种远程管理连接工具,在CentOS7系统中默认安装并开机自启的。

SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。

监听tcp的22号端口。软件包名称:openssh

配置文件目录:/etc/ssh,sshd_config 服务端配置文件;ssh_config 客户端配置文件。

客户端提供:ssh、scp、sftp命令

服务端提供:sftp服务、ssh服务

2. 配置文件

服务端配置文件: sshd_config

部分内容解析

Port 22 #监听端口


AddressFamily any #ip地址版本


ListenAddress 0.0.0.0 #监听地址,ipv4


ListenAddress :: #监听地址,ipv6


PermitRootLogin yes #是否允许root用户登录


MaxAuthTries 6 #重新连接最大次数


MaxSessions 10 #建立不同用户的会话的最大个数


PubkeyAuthentication yes #是否启用公钥对验证登录


AuthorizedKeysFile      .ssh/authorized_keys #存储客户端公钥信息的文件


PasswordAuthentication yes #是否启用密码验证登录


PermitEmptyPasswords no #是否允许空密码登录


UsePAM yes #启用系统用户及密码进行验证登录


UseDNS no #是否启用ssh内部的解析,会影响连接速度

客户端配置文件: ssh_config,设置ssh命令连接的关键配置

Port 22 #设置ssh命令连接的默认端口

3.命令解析

远程登录命令:

ssh [选项] [username@]ssh服务器的监听IP地址或者主机名(使用主机名时,保证客户端能够解析主机名)

-p port  指定连接服务器的监听端口

远程拷贝命令:

scp  本机的文件路径  [username@]ssh服务器的监听IP地址或者主机名:/远程主机存储路径

scp    [username@]ssh服务器的监听IP地址或者主机名:/远程主机存储路径 本机的文件路径

sftp服务登录命令:

sftp [选项] [username@]ssh服务器的监听IP地址或者主机名(使用主机名时,保证客户端能够解析主机名)

4.登录方式配置

a.用户名密码登录

默认方式,直接输入登录

b.公钥验证登录

概念解析
对称加密双方采用相同的秘钥,安全性较低
非对称加密双方采用不同的秘钥,安全性较高
公钥大家都可以知道的秘钥。
私钥只有自己知道的秘钥。能够证明自己的身份信息

数据加密

使用对端的公钥加密,接收端收到数据后,使用自己的私钥解密。作用是保证数据完整性。

数字签名

私用自己的私钥加密,接收端收到数据后,使用发送端的公钥解密。作用是保证发送者的身份唯一性。

ssh客户端生成密钥对

生成密钥对的命令:

ssh-keygen ,默认是交互式

常用选项:

-t : 指定秘钥算法
-N : 指定秘钥短语
-f : 指定秘钥存储路径

非交互生成密钥对

ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

#id_rsa: 私钥;id_rsa.pub: 公钥

拷贝公钥命令:ssh-copy-id 

5.实操生成密钥对

先创建一个账户阿白,设置密码

生成密钥ssh-keygen,交互式生成,按三次回车

非交互式生成ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa

将密钥复制给其他用户

此时,可以直接使用阿白登录阿绿账户(免密登录)

三.Rsync+sersync实现数据实时同步

1.rsync概述

Rsync(Remote Sync)是Linux系统下的数据镜像备份工具。该工具可以实现远程同步、不同主机之间的同步,也能实现全量备份增量备份,保持数据链接和权限,并采用优化的同步算法,传输前对数据进行压缩,故该工具非常适合架构集中式备份异地备份。也支持本地复制或与ssh、rsync同步。

官网地址:https://rsync.samba.org/

优点:

  • scp无法备份大量数据,而rsync备份、统计、比较一起进行。

  • 可以备份整个目录树和文件系统,并保持文件原来的权限、时间、软硬链接。

  • 安装较容易,无需特殊权限。

  • 同步快速,首次同步完全备份,再次同步增量备份。

  • 可以使用scp和ssh等方式传输备份文件

  • 支持匿名传输

  • 选择性保持:符号链接、硬链接、文件属性、权限、时间等

  • 传输速度快:压缩再传输、解压再使用,减少带宽。

备份分类:

  • 完全备份:所有文件进行备份

  • 差异备份:备份自上次完全备份以来所有的修改

  • 增量备份:备份自上次备份依赖所作的修改

2.rsync运行原理

rsync采用C/S模式,即点到点的传输。通过xinetd服务监听873端口,再让xinetd服务下的rsync服务作出响应。

源主机:需要同步数据的服务器

目标主机:存放服务器同步数据的主机

数据同步方式:push 和 pull

  • 推push:主动同步,把数据发送给目标主机。服务器开销大,适合后端服务器较少的情况。【服务器备份推给rsync客户端存放,主动模式】

目的主机配置为 rsync 服务端,源主机周期性的使用 rsync 命令把要同步的目录推过去。

  • 拉pull:所有客户端主机去服务器上面拉数据,导致数据传输缓慢。【rsync客户端去服务器上拉数据,存放到客户端上,被动模式】

源主机配置为 rsync 服务端,目的主机周期性的使用 rsync 命令把要同步的目录拉过来。

3.rsync部署

查看是否监听873端口号

配置文件/etc/rsyncd.conf

参数作用
-a–archive archive mode权限保存模式【递归、保持属性】
-r递归处理
-p保留文件原有属性
-t保留文件原有时间
-g保留属组
-o保留档案所有者
-D保留device咨询
-l复制所有的连接
-z压缩传输
-H保留硬链接文件
-A保留文件的ACL属性
-P–progress
-–version输出rsync版本信息
-v显示输出过程
-u仅进行更新
–-port指定端口号,默认873
–-delete删除那些目标位置有的文件而备份源没有的文件,最大程度的保持一致
–-password-file指定密码文件
–-bwlimit限制I/O带宽
–-filter需要过滤的文件
–-exclude需要过滤的文件
–-progress显示备份过程
–avz常用:保留权限、显示同步过程、压缩传输

4.备份测试

配置备份目录

  • 服务器:sourcePC 192.168.71.151 (需要进行数据备份的主机)

  • 客户端:targetPC 192.168.71.149 (备份存储的主机)

编写客户端/etc/rsyncd.conf文件,并且创建目录/door/backup

给密码文件加上权限,不然会报错

然后进行跨机备份,输入密码(123456)

成功接收两个文件

此时再创建两个文件后重新备份

此时将会删除那些目标位置有的文件而备份源没有的文件,最大程度的保持一致。

若是拉取数据

cat /etc/rsync.passwd
123456
chmod 600 /etc/rsync.passwd
rsync -avz /data rsyncuser@192.168.71.149::data --password-file=/etc/rsync.passwd

5.rsync+sersync 实现数据实时同步

1 数据同步原理

1、为什么要是用rsync+sersync

sersync是基于inotify开发的,可以记录目录中发生变化的内容,具体到某个文件或者目录,在使用rsync同步的时候,只同步发生变化的文件或者目录。【增量同步】

2、rsync+inotify-tools 与 rsync+sersync 架构的区别?

①inotify-tools只能记录目录发生了变化,但是不能具体到某个文件或者目录。

②rsync同步不清楚哪些文件或目录发生了变化,就会整个目录都同步,效率低。

3、同步过程:

①源服务器上开启sersync记录指定路径的文件系统变化情况。

②源服务器上使用rsync命令把变化的数据同步到目标服务器上。

③源服务器上配置sersync服务,目标服务器安装rsync服务。

2 部署rsync+sersync

sersync服务端【同步服务器】:192.168.71.151

rsync客户端【存放备份,目标服务器】:192.168.71.149

由于sersync只能监控到差异变化,同步还是需要rsync去做,所以先确保rsync运行正常。可以测试一遍,看能否做完全同步。

修改文件内容为

然后启动服务(因为在当前目录,直接./)

在一边创建文件,一边完成实时监控

6.脚本编写

先在目标主机编写配置脚本

#!/bin/bash
systemctl status rsyncd &> /dev/null
if [ $? -ne 0 ];then
systemctl start rsyncd 
firead -p "请输入ip地址:" ip
read -p "请输入创建的文件名称:" file
read -p "请输入跨机使用的密码:" passwd
mask=`echo $(echo $ip | cut -d. -f1,2,3).0/24`
echo "port=873
address = $ip
uid = root
gid = root
use chroot = yes
max connections = 4
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file = /etc/rsyncd.motd
hosts allow = $mask
[$file]
path = /$file/backup
comment = bakcup data
read only = false
list = yes
auth users = rsyncuser
secrets file = /etc/rsync.passwd">/etc/rsyncd.conf
touch /etc/rsync.passwd
chmod 600 /etc/rsync.passwd
echo "rsyncuser:$passwd">/etc/rsync.passwd
mkdir -p /$file/backup
echo "Welcome to Backup server">/etc/rsyncd.motdsystemctl restart rsyncd

运行后创建成功 

 

再在源主机编写一个简单的备份脚本

#!/bin/bash
systemctl status rsyncd &> /dev/null
if [ $? -ne 0 ];then
systemctl start rsyncd
firead -p "请输入要备份的目录:(格式:/目录)" dir
read -p "请输入要备份的目标主机ip:" ip
read -p "请输入目标地址创建的文件名称:" nameread -p  "是否选择最大程度保持一直?(y/n): " choose
if [ "$choose" == "n" ];then
rsync -avz $dir  rsyncuser@$ip::$name
else
rsync -avz --delete  $dir  rsyncuser@$ip::$name
fi

 然后输入信息后运行脚本,在目标主机上可以看到备份成功

7.总结

  • rsync可以进行数据的同步,可以使用推和拉两种方式。推即源主机推数据到目标主机,拉即目标主机从源主机上拉数据。

  • push:服务器向客户端推送数据,要在目标主机上配置一个共享目录,在服务端上使用rsync命令推送数据给目标主机。

  • pull:客户端向服务器拉去数据,需要把服务器上的同步目录配置成一个共享目录,然后客户端去这个共享目录上拉去数据。

  • 仅使用rsync同步数据,不会记录数据的变化,每次同步都是同步整个目录,不适合大量数据的同步。

  • 结合使用rsync+sersync,sersync负责监控源主机上同步目录的数据变化,rsync负责同步变化的部分,极大地提高了同步的效率。


伴随本次内容的结束,网络服务也是告一段落,来不及悲伤,即将向我们走来的是!Nginx!

http://www.lryc.cn/news/572131.html

相关文章:

  • ThinkPHP结合使用PHPConsole向Chrome 控制台输出SQL
  • 计算机网络 网络层:数据平面(一)
  • ​ CATIA V5与3DEXPERIENCE协同设计:引领无人机行业新纪元
  • 【无人机实时拼图框架(正射影像)论文翻译】OpenREALM: Real-time Mapping for Unmanned Aerial Vehicles
  • 14.8 AI写作核心技术解析:四阶段分层提示工程如何实现从大纲到风格的全流程优化
  • RPC - Response模块
  • 2025年通信安全员考试题库及答案
  • JVM(6)——详解标记-清除算法
  • 安卓vscodeAI开发实例
  • 安卓JetPack篇——Livadata
  • 无人机电机模块技术分析
  • Vue-11-前端框架Vue之应用基础父组件传值到子组件props的使用
  • 破局基建困局:国有平台公司数字化转型的生态重构
  • Spring Boot 集成 Elasticsearch(含 ElasticsearchRestTemplate 示例)
  • 华为网路设备学习-25(路由器OSPF - 特性专题 二)
  • CSS语法中的选择器与属性详解
  • day42-硬件学习之温度传感器及(ARM体系架构)
  • AR/VR显示为何视场受限?OAS对标波导案例来解决
  • 【跨界新视野】信号处理遇上VR/AR:下一代沉浸体验的核心技术与您的发表蓝海
  • C++实现异步(重叠)管道通信
  • 【MySQL基础】MySQL内置函数全面解析:提升你的数据库操作效率
  • ③-1实现 FastAdmin 默认开启通用搜索功能的方法
  • 教学的新革命!大模型生成讲解,Manim 打造动画视频
  • 【MySQL】SQL基础
  • 50-Oracle awr报告生成-实操
  • 关于AB PLC的ethernet/IP 通信 c++搭建
  • 人机融合智能 | 人智交互语境下的设计新模态
  • Shell脚本应用及实战演练
  • SpringBoot电脑商城项目--收获地址列表
  • 数字华容道智力小游戏微信流量主小程序开源