ssh 服务和 rsync 数据同步
目录
一、ssh服务
1、概述
2、命令解析
远程登录命令
远程拷贝命令
3、登录方式配置
1、用户名密码登录
2、公钥验证登录
二、rsync 数据同步
1、rsync概述
2、rsync运行原理
3、rsync部署
一、ssh服务
1、概述
ssh服务,一种远程管理连接工具,在CentOS7系统中默认安装并开机自启的。
SSH(Secure Shell)是一种安全通道协议,主要用来实现字符界面的远程登录,远程复制等功能。
监听tcp的22号端口。软件包名称:openssh
配置文件目录:/etc/ssh,sshd_config 服务端配置文件;ssh_config 客户端配置文件。
客户端提供:ssh、scp、sftp命令
服务端提供:sftp服务、ssh服务
2、命令解析
远程登录命令
###语法:####
ssh [选项] [username@]ssh服务器的监听IP地址或者主机名(使用主机名时,保证客户端能够解析主机名)
####选项:######root@shuaige ~]# ssh root@192.168.126.150
The authenticity of host '192.168.126.150 (192.168.126.150)' can't be established.
ECDSA key fingerprint is SHA256:mcPIFK1593usLRK8zsfuNNsBn39Jt2MC2L/GP1fhA1I.
ECDSA key fingerprint is MD5:00:85:24:3b:89:ba:ab:7e:35:49:f7:21:d2:0e:c7:f7.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.126.150' (ECDSA) to the list of known hosts.
root@192.168.126.150's password:
Last login: Thu Jun 19 20:20:05 2025 from 192.168.126.1
[root@niuniu ~]#
远程拷贝命令
###语法:####
##将本机的文件拷贝到远程主机##
scp 本机的文件路径 [username@]ssh服务器的监听IP地址或者主机名:/远程主机存储路径
##将远程主机的文件拷贝到本机##
scp [username@]ssh服务器的监听IP地址或者主机名:/远程主机存储路径 本机的文件路径
###sftp服务登录命令###
sftp [选项] [username@]ssh服务器的监听IP地址或者主机名(使用主机名时,保证客户端能够解析主机名)[root@shuaige ~]# ls
anaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm sersync2.5.4_64bit_binary_stable_final.tar.gz
[root@shuaige ~]# scp root@192.168.126.150:/root/info.sh /root/
root@192.168.126.150's password:
info.sh 100% 79 49.6KB/s 00:00
[root@shuaige ~]# ls
anaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm info.sh sersync2.5.4_64bit_binary_stable_final.tar.gz
3、登录方式配置
1、用户名密码登录
默认方式,直接可以使用
2、公钥验证登录
密码学基础:
概念 | 解析 |
---|---|
对称加密 | 双方采用相同的秘钥,安全性较低 |
非对称加密 | 双方采用不同的秘钥,安全性较高 |
公钥 | 大家都可以知道的秘钥。 |
私钥 | 只有自己知道的秘钥。能够证明自己的身份信息 |
注意:公钥和私钥不能相互推导!!!
公钥与私钥之间能够相互解密!!!
数据加密:
使用对端的公钥加密,接收端收到数据后,使用自己的私钥解密。作用是保证数据完整性。
数字签名:
私用自己的私钥加密,接收端收到数据后,使用发送端的公钥解密。作用是保证发送者的身份唯一性。
ssh客户端生成密钥对
[root@shuaige .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:VCveITX0r9Lbcb6f4ntKuK0aWHeKWDW8bbv9lQRwCIQ root@shuaige
The key's randomart image is:
+---[RSA 2048]----+
| o+*... |
| E o.=o |
| + o+.. |
| o +..+.. |
| So.o +.. |
| = o.=.o .|
| o o.ooo..o|
| ..++o=o|
| ..o+**+B|
+----[SHA256]-----+[root@shuaige .ssh]# ls
id_rsa id_rsa.pub ###id_rsa: 私钥;id_rsa.pub: 公钥###
拷贝公钥命令
ssh-copy-id ##将公钥拷贝到IP地址为192.168.126.150的root用户下
[root@shuaige .ssh]# ssh-copy-id root@192.168.126.150
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.126.150 (192.168.126.150)' can't be established.
ECDSA key fingerprint is SHA256:mcPIFK1593usLRK8zsfuNNsBn39Jt2MC2L/GP1fhA1I.
ECDSA key fingerprint is MD5:00:85:24:3b:89:ba:ab:7e:35:49:f7:21:d2:0e:c7:f7.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.126.150's password: Number of key(s) added: 1Now try logging into the machine, with: "ssh 'root@192.168.126.150'"
and check to make sure that only the key(s) you wanted were added.##远程登录就不用再输入密码验证了
二、rsync 数据同步
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部署
[root@shuaige ~]# yum install xinetd rsync -y
[root@niuniu ~]# yum install xinetd rsync -y
参数 | 作用 |
---|---|
-a | –archive archive mode权限保存模式【递归、保持属性】 |
–port | 指定端口号,默认873 |
–delete | 删除那些目标位置有的文件而备份源没有的文件,最大程度的保持一致。 |
–avz | 常用:保留权限、显示同步过程、压缩传输 |
# 由于rsync备份是会保持目录及其文件的权限、时间、软硬连接不变的,那要求备份在ssh传输过程中一路顺畅,不会因权限不足而备份失败。
# 这里创建test用户用于测试
[root@shuaige ~]# useradd test && echo 123456 | passwd --stdin test
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@niuniu ~]# useradd test && echo 123456 | passwd --stdin test
更改用户 test 的密码 。
passwd:所有的身份验证令牌已经成功更新。# 服务端上创建测试目录/data
# g+s权限的作用在于/data目录下新增的文件的所属组都会是test
# setfacl为test用户创建在/data的rwx权限
[root@shuaige ~]# mkdir /data
[root@shuaige ~]# chown -R test:test /data
[root@shuaige ~]# chmod g+s /data
[root@shuaige ~]# setfacl -m u:test:rwx /data
[root@shuaige ~]# cp -r /boot/* /data# 客户端上创建备份存放目录
[root@niuniu ~]# mkdir -p /data/backup/
[root@niuniu ~]# chown test:test /data/backup/
[root@niuniu ~]# ll -d /data/backup/
drwxr-xr-x. 2 test test 6 8月 6 23:52 /data/backup/# 备份/data目录下的数据到客户端上
[root@server ~]# rsync -avz /data/ test@192.168.126.147:/data/backup
test@192.168.126.147's password:
sending incremental file list
./
。。。省略备份信息。。。
sent 138,094,794 bytes received 6,296 bytes 5,211,361.89 bytes/sec
total size is 152,364,618 speedup is 1.10# 客户端上验证备份内容,可以看到有数据传输进去
[root@niuniu ~]# du -sh /data/backup/
146M /data/backup/# 如果同步的时候,使用的不是ssh的22号端口,而是其他端口,比如222,要加-e参数指定端口号
rsync -avz /data/ -e "ssh -p 222" test@192.168.126.147:/data/backup