用最簡單易懂的話,說最難的知識點!
大家好,我是菜鳥程序員Chivalry,今天要和大家分享的是如何編寫免密腳本,在前兩篇文章中介紹了SSH登錄以及免密登錄的原理,想了解的小伙伴歡迎查看。
為了照顧基礎薄弱的小伙伴,我打算從頭詳細講解一下SSH相關的知識點。
(1)SSH是一種加密的網絡傳輸協議,提供安全的數據傳輸服務。一般用ssh-genkey生成生成公鑰和密鑰,這兩個文件會默認保存在~/.ssh/路徑下。常用的參數為:
- -t: 指定生成密鑰類型(rsa、dsa)。默認為rsa
- -f: 指定存放私鑰的文件,公鑰文件名為私鑰文件名加.pub后綴。默認為id_rsa
- -P: 指定passphrase(私鑰的密碼),用于確保私鑰的安全。默認為空
- -C: 備注。默認為user@hostname
如下圖所示:
公鑰和私鑰
其中:
id_rsa是私鑰文件
id_rsa.pub是公鑰文件
authorized_keys用于存放客戶端公鑰的文件
known_hosts是確認過公鑰指紋的可信服務器列表的文件
當主機作為服務器時,有客戶端連接時,則將客戶端的公鑰放在authorized_keys中;當主機作為客戶端時,則將訪問過得主機的公鑰放在known_hosts中,也就是說ssh會將每個訪問過的主機公鑰(public key)都存放在~/.ssh/known_hosts中。
(2)再來說一下什么是公鑰檢查
當我們第一次連接遠程主機時,會彈出該主機的公鑰摘要,詢問我們是否信任該主機,如下圖所示:
遠程主機公鑰摘要
輸入yes,該主機公鑰摘要就會被記錄在本機的~/.ssh/known_hosts中。
很多時候我們并不需要公鑰摘要確認,那可以使用:
ssh -o StrictHostKeyChecking=no remote_host_ip
(3)好了,知道了上面的基礎知識點,我們就可以寫免密腳本了。如下圖所示:
免密腳本
后續我會推出更多關于shell腳本內容的文章,歡迎喜歡的小伙伴訂閱收藏!