簡單來講,就是經過ssh-keygen -t rsa命令來產生一組公私鑰,私鑰是id_rsa,公鑰是id_rsa.pub,把公鑰上傳到另外一臺服務器對應帳號的.ssh/authorized_keys,便可實現免密碼登陸到另外一臺服務器上。服務器
這個其實比上面的要簡單,以前上大學時老師也講過。必定要明白客戶端和服務端時經過公鑰和私鑰實現認證登陸的。必定要緊緊記住就是隻靠這兩個東西,沒有其餘的了。ssh
拿自動化部署舉例,Rundeck部署在一臺服務器上如今要對其餘的一臺或者多臺部署服務器進行項目部署,在這個場景下Rundeck對應的服務器要想去訪問其餘的部署服務器就要經過公私鑰的這種方式。加密
Rundeck服務器至關於A端,而部署服務器至關於B端。A、B兩端要實現交互認證就要經過一組公私鑰。3d
一、客戶端即A端生成RSA公鑰和私鑰:blog
通常在用戶的根目錄新建一個.ssh/.文件夾,在文件夾中經過ssh-keygen -t rsa命令來產生一組公私鑰。ip
以下圖所示id_rsa爲私鑰,id_rsa.pub爲公鑰。rem
二、客戶端將本身的公鑰存放到服務器:在生成了公私鑰以後要實現AB兩端的交互認證,這兩個文件確定不能只放到A端,固然也須要在B端(服務器端)作一下登記,咱們本身(A端)保留本身的私鑰,而後把公鑰id_rsa.pub存放到B端(通常是在用戶根目錄下的.ssh/目錄下)部署
在服務器端(B端)的.ssh/目錄下還會有authorized_keys+know_hosts,這兩個文件。自動化
authorized_keys:存放遠程免密登陸的公鑰,主要經過這個文件記錄多臺機器的公鑰,上面提到的A端在生成本身的公私鑰以後,將公鑰追加到authorized_keys文件後面。test
紅色框起來的爲新追加的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 root@222.73.156.133 -p1019
nsycn備份:rsync -avz -e 'ssh -p22222' /home/testa/ testb@111.160.40.132:/home/testb