SSH免密碼登錄,實現數據傳輸備份
1.ssh的登錄方式
1.1 密碼口令
- 客戶端連接上服務器之後,服務器把自己的公鑰傳給客戶端
- 客戶端輸入服務器密碼通過公鑰加密之後傳給服務器
- 服務器根據自己的私鑰解密登錄密碼,如果正確那麽就讓客戶端登錄
1.2 公鑰認證
這個其實比上面的要簡單,之前上大學時老師也講過。一定要明白客戶端和服務端時通過公鑰和私鑰實現認證登錄的。一定要牢牢記住就是只靠這兩個東西,沒有其他的了。
拿自動化部署舉例,Rundeck部署在一臺服務器上現在要對其他的一臺或者多臺部署服務器進行項目部署,在這個場景下Rundeck對應的服務器要想去訪問其他的部署服務器就要通過公私鑰的這種方式。
Rundeck服務器相當於A端,而部署服務器相當於B端。A、B兩端要實現交互認證就要通過一組公私鑰。
1、客戶端即A端生成RSA公鑰和私鑰:
一般在用戶的根目錄新建一個.ssh/.文件夾,在文件夾中通過ssh-keygen -t rsa命令來產生一組公私鑰。
如下圖所示id_rsa為私鑰,id_rsa.pub為公鑰。
2、客戶端將自己的公鑰存放到服務器:在生成了公私鑰之後要實現AB兩端的交互認證,這兩個文件肯定不能只放到A端,當然也需要在B端(服務器端)做一下登記,我們自己(A端)保留自己的私鑰,然後把公鑰id_rsa.pub存放到B端(一般是在用戶根目錄下的.ssh/目錄下)
在服務器端(B端)的.ssh/目錄下還會有authorized_keys+know_hosts,這兩個文件。
authorized_keys:存放遠程免密登錄的公鑰,主要通過這個文件記錄多臺機器的公鑰,上面提到的A端在生成自己的公私鑰之後,將公鑰追加到authorized_keys文件後面。
紅色框起來的為新追加的A端的公鑰。
know_hosts : 已知的主機公鑰清單,這個作為A端和B端都會自動生成這個文件,每次和遠端的服務器進行一次免密碼ssh連接之後就會在這個文件的最後追加對方主機的信息(不重復)
每進行一次就會在這個文件中自動的追加新的主機信息
通過scp將內容寫到對方的文件中
命令:scp -p ~/.ssh/id_rsa.pub root@<remote_ip>:/root/.ssh/authorized_keys
也可以分解為一下兩步來進行:
$ scp ~/.ssh/id_rsa.pub root@<remote_ip>:pub_key //將文件拷貝至遠程服務器
$ cat ~/pub_key >>~/.ssh/authorized_keys //將內容追加到authorized_keys文件中, 不過要登錄遠程服務器來執行這條命令
網上很多都是用scp >>去追加,如果你可以登錄到B端的話其實直接復制過去就可以了。
需要註意的幾點:
設置文件和目錄權限(服務器端即B端的權限):
設置authorized_keys權限
$ chmod 600 authorized_keys
設置.ssh目錄權限
$ chmod 700 -R .ssh
到這裏我們的配置工作就結束了!!!
進行連接認證:
ssh [email protected] -p1019
nsycn備份:rsync -avz -e ‘ssh -p22222‘ /home/testa/ [email protected]:/home/testb
SSH免密碼登錄,實現數據傳輸備份