ssh 服务和 rsync 数据同步

目录

一、ssh服务

1、概述

2、命令解析

远程登录命令

远程拷贝命令

3、登录方式配置

1、用户名密码登录

2、公钥验证登录

[二、rsync 数据同步](#二、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 [email protected]
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.
[email protected]'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 [email protected]:/root/info.sh /root/
[email protected]'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 [email protected]
/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
[email protected]'s password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
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/ [email protected]:/data/backup
[email protected]'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" [email protected]:/data/backup 
相关推荐
拍客圈29 分钟前
单服务器部署多个Discuz! X3.5站点并独立Redis配置方案
运维·服务器·redis
aigoushan2 小时前
零基础开始的网工之路第二十一天------性能优化
运维·服务器·网络
小声读源码2 小时前
【技巧】使用frpc安全地内网穿透ssh访问内网机器
运维·安全·ssh·内网穿透·frpc
guygg882 小时前
Linux中的阻塞信号与信号原理
linux·mysql·apache
眠りたいです3 小时前
MySQL基础与常用数据类型浅析
linux·数据库·mysql
芊言芊语3 小时前
CAN2.0、DoIP、CAN-FD汽车协议详解与应用
运维·服务器·网络
洛克希德马丁4 小时前
最简单的方式突破远程桌面封锁
ssh·代理·socks
听风lighting4 小时前
1. C++ WebServer项目分享
linux·c语言·c++·设计模式·嵌入式·webserver
chengf2234 小时前
WSL 安装使用和常用命令
linux
莫到空离4 小时前
SSH服务与rsync服务配置实战
大数据·服务器·ssh