目錄
一、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