使用ssh keygen實現rsync免密鑰同步數據
阿新 • • 發佈:2018-05-26
linux rsync 運維 ssh 總結:生成公鑰和私鑰,把公鑰推送到遠端,並生成authorized_keys公鑰驗證配置文件
rsync連接方式每次都需要輸入密碼;我們可以通過ssh keygen的公私鑰機制來實現ssh連接時認證(做定時任務時,可能需要用到)。
1、服務器添加用戶Ricky,並在家目錄下創建.ssh目錄(rsync服務端)
rsync連接方式每次都需要輸入密碼;我們可以通過ssh keygen的公私鑰機制來實現ssh連接時認證(做定時任務時,可能需要用到)。
1、服務器添加用戶Ricky,並在家目錄下創建.ssh目錄(rsync服務端)
[root@backup ~]#useradd Ricky
[root@backup ~]# mkdir /home/Ricky/.ssh
.ssh目錄用來存放公鑰驗證文件
2、在客戶端使用ssh-keygen生成私鑰與公鑰(rsync客戶端)
[root@nfs01 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): /usr/rsync_id_dsa #為避免覆蓋root的id_rsa,把私鑰放到/usr/rsync_id_dsa Enter passphrase (empty for no passphrase): #回車就行,空表示沒有密碼 Enter same passphrase again: #回車 Your identification has been saved in /usr/rsync_id_dsa. Your public key has been saved in /usr/rsync_id_dsa.pub.#生成公鑰 The key fingerprint is: 8a:97:ca:71:ee:99:96:3c:1e:d6:cd:76:a7:3d:69:e0 root@nfs01 The key‘s randomart image is: +--[ RSA 2048]----+ | | | | | | | | | S | | . + o . | | o.B.. +..... | | . B=+ . .E++ | | o+*. .... | +-----------------+ You have new mail in /var/spool/mail/root
3、把客戶端生成的公鑰推送到服務端
因為使用的Ricky用戶進行驗證,所以放到/home/Rikcy/.ssh目錄下
[root@nfs01 ~]# scp /usr/rsync_id_dsa.pub [email protected]:/home/Ricky/.ssh
[email protected]‘s password:
rsync_id_dsa.pub 100% 392 0.4KB/s 00:00
也可以使用搭建好的rsync服務推送,還是需要輸入密碼
[root@nfs01 ~]# rsync /usr/rsync_id_dsa.pub [email protected]:/home/Ricky/.ssh [email protected]‘s password: [root@nfs01 ~]#
4、到服務端上把公鑰存放到authorized_keys配置文件中
這是ssh key驗證時訪問的公鑰所在的配置文件。authorized_keys是不存在的,直接下面的命令就可以創建了。
[root@backup .ssh]# cat rsync_id_dsa.pub > authorized_keys
[root@backup .ssh]# chown Ricky:Ricky authorized_keys #修改該文件的屬主與屬組,讓其成為Ricky的配置文件
5、使用rsync ssh –i 進行推送
ssh的-i參數:指定自身的私鑰,並與遠端的用戶的公鑰進行驗證,驗證通過則建立ssh連接進行數據交換,否則拒絕連接。
[root@nfs01 ~]# rsync -avzP -e ‘ssh -p 22 -i /usr/rsync_id_dsa‘ /etc/hosts [email protected]:/tmp/
sending incremental file list
hosts
311 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
rsync: mkstemp "/tmp/.hosts.qlgEix" failed: Permission denied (13)
sent 189 bytes received 31 bytes 440.00 bytes/sec
total size is 311 speedup is 1.41
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]
這裏推送數據失敗,的原因是backup備份服務器上的/tmp/對於Ricky用戶來說沒有權限。
[root@backup Ricky]# ls -ld /tmp
drwxr-xr-x. 2 root root 4096 5月 17 02:36 /tmp
重新創建一個Ricky的目錄,用來接收數據
[root@backup ~]# mkdir /ricky
[root@backup ~]# chown Ricky:Ricky /ricky/
[root@backup ~]# ls -ld /ricky/
drwxr-xr-x 2 Ricky Ricky 4096 5月 17 02:43 /ricky/
[root@backup ~]#
[root@nfs01 ~]# rsync -avzP -e ‘ssh -i /usr/rsync_id_dsa‘ /etc/hosts [email protected]:/ricky/
sending incremental file list 無需輸入密碼
hosts
311 100% 0.00kB/s 0:00:00 (xfer#1, to-check=0/1)
sent 189 bytes received 31 bytes 440.00 bytes/sec
total size is 311 speedup is 1.41
You have new mail in /var/spool/mail/root
[root@nfs01 ~]#
[root@backup ~]# ls /ricky/
hosts
[root@backup ~]#
註意:一定要確保對應的文件和目錄,訪問的用戶是具有權限的,否則驗證不能通過,或者推送無訪問權限被拒絕。
使用ssh keygen實現rsync免密鑰同步數據