在工作中經常有遇到需要腳本自動化同步文件的地方,比如數據庫異地備份。假設有兩台機子A(192.168.16.218)和B(192.168.16.117),需要能夠讓A免密碼連接B。
先來看看正常的ssh連接登陸時怎么樣子的。
當第一次連接時會提示認證不能通過,是否繼續,只需要按yes繼續即可。

輸入yes之后會繼續警告將192.168.16.116永久添加到known hosts,忽略繼續。

輸入密碼登陸成功
假設要將A主機(192.168.16.218)root用戶home目錄下的database_backup_20161208_235618.sql數據庫備份文件同步到B主機(192.168.16.117),手動的方式為
root@kali:~# scp db_backup.sql root@192.168.16.117:~/backup/

輸入密碼后同步成功。
但是在生產環境中這樣手動肯定是不行的,這個時候就需要我們好好運用科技的力量了,畢竟科技是第一生產力嘛~
STEP 1
生成公鑰私鑰對
root@kali:~# ssh-keygen -t rsa
這里記得加上-t rsa參數,意思是生成rsa類型的公鑰秘鑰對,親測不加上的話不行~
按默認的連續三次確認即可

可以看到~/.ssh/目錄下多了兩個文件id_rsa和id_rsa.pub,分別是私鑰和公鑰,這里我們只需要公鑰即可。

STEP2
先把公鑰id_rsa.pub傳到B主機(192.168.16.117)上
root@kali:~# scp id_rsa.pub root@192.168.16.117:~/.ssh/id_rsa.pub_temp 這里記得重命名一下,以免覆蓋B主機原有的公鑰

STEP3
將id_rsa公鑰的內容添加到.ssh目錄下的authorized_keys文件,記得以追加的方式添加,以免將別的公鑰覆蓋,若文件不存在則新建。
登陸到192.168.16.117上進行操作:
root@kali:~# cat id_rsa.pub_temp >> authorized_keys

STEP4
測試登陸

DONE!
與rcp類似的工具還有rsync,用法也類似,感興趣的同學可以自己查查看:)
