Linux密鑰登錄原理和ssh使用密鑰實現免密碼登陸


目錄

  1. 公鑰私鑰簡介

  2. 使用密鑰進行ssh免密登錄

    2.1. 實驗環境

    2.2. 開始實驗

  3. ssh的兩種登陸方式介紹

    3.1. 口令驗證登錄

    3.2. 密鑰驗證登錄

  4. 總結


 

1、公私鑰簡介與原理

  公鑰和私鑰都屬於非對稱加密算法的一個實現,這個加密算法的信息交換過程是:

1) 持有公鑰的一方(甲)在收到持有私鑰的一方(乙)的請求時,甲會在自己的公鑰列表中查找是否有乙的公鑰,如果有則使用一個隨機字串使用公鑰加密並發送給乙。

2) 乙收到加密的字串使用自己的私鑰進行解密,並將解密后的字串發送給甲。

3) 甲接收到乙發送來的字串與自己的字串進行對比,如過通過則驗證通過,否則驗證失敗。

 

  非對稱加密算法不能使用相同的密鑰進行解密,也就是說公鑰加密的只能使用私鑰進行解密。

 

2、使用密鑰進行ssh免密登錄

  ssh使用私鑰登錄大致步驟就是:主機A(客戶端)創建公鑰私鑰,並將公鑰復制到主機B(被登陸機)的指定用戶下,然后主機A使用保存私鑰的用戶登錄到主機B對應保存公鑰的用戶。

 

(1) 實驗環境

    兩台主機:

1) 主機A(客戶機):192.168.187.137

2) 主機B(被登陸機):192.168.187.143

 

(2) 實驗開始

  1. 在需要免密登陸的主機(主機A)下生成公鑰和私鑰
1 # ssh-keygen -t rsa     ##-t rsa可以省略,默認就是生成rsa類型的密鑰

     說明:命令執行后會有提示,輸入三次回車即可,執行完成后會在當前用戶的.ssh目錄下生成兩個文件:id_rsa、id_rsa.pub文件,前者時私鑰文件,后者是公鑰文件(拷貝到其他主機只需要拷貝這個文件的內容)

 

  1. 將公鑰復制到被登陸的主機上的 ~/.ssh/authorized_keys 文件中

     拷貝公鑰有兩種方法,其原理都相同:

 

     方式一:使用 ssh-copy-id 直接拷貝

      使用 ssh-copy-id 進行拷貝公鑰非常方便,只需要指定目標主機和目標主機的用戶即可。

1 # ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.187.142

      執行這條命令后會自動將登錄主機的公鑰文件內容追加至目標主機中指定用戶(root).ssh目錄下的authorized_keys文件中。這個過程是全自動的,非常方便。

 

     方法二:自己創建文件進行拷貝

1) 在登錄主機(客戶機)上創建authorized_keys文件並將公鑰追加到該文件。

       先cd到登錄機使用的用戶下的 .ssh 目錄,方便操作

1 # cat id_rsa.pub >> authorized_keys
2 # chmod 600 authorized_keys     ##修改文件權限為600,該文件有規定如果屬組其他人出現可寫則文件就不會生效

2) 在被登錄機的指定用戶家目錄下創建 .ssh 目錄(這里在root用戶下創建,因為要使用密鑰登陸到root用戶)

# mkdir .ssh
# chmod 700 .ssh     ##將目錄權限改為700該目錄的權限必須是700才有效

3) 將登錄機創建的authorized_keys文件拷貝到被登錄機,使用scp

1 # scp authorized_keys root@192.168.187.142:/root/.ssh/
2 authorized_keys                                  100%  402   576.4KB/s   00:00

 

  1. 登錄

     使用主機A乙root用戶身份登陸到主機B

1 # ssh root@192.168.187.142
2 Last login: Wed Feb 13 15:24:30 2019 from 192.168.187.137

     首次登錄將彈出保存信息,輸入yes即可,此時已經實現了免密的密鑰登陸。

 

  1. 注意事項和說明

     上例只能實現主機A免密登陸到主機B的root用戶,如果想讓主機B也免密登錄到主機A,創建密鑰和拷貝步驟相同。

     密鑰登陸的方式只能登錄被登錄機中 .ssh 目錄下有對應公鑰的用戶,如果想讓所有用戶都可以被登錄則需要將authorized_keys文件的內容追加到其他用戶的 ~/.ssh/authorized_keys 文件中。

     如果使用自己創建的authorized_keys文件進行復制公鑰則要嚴格設置權限,權限不正確會導致文件無法使用,也就無法進行密鑰驗證。

 

 

3、 ssh的兩種登陸方式介紹

(1) 口令驗證登錄

 

 

(2) 密鑰驗證登錄

    密鑰驗證的前提需要登陸主機生成一對密鑰(公鑰和私鑰),並將公鑰放置在服務器上。

 

 

 

4、 總結

  ssh密鑰登錄可以實現免密登錄,免密登陸有很多用途:例如scp免認證、rsync備份免交互等一切使用ssh認證的地方均可以免交互,也就實現了自動化。

 

  密鑰認證的大概步驟

1) 客戶端(登錄主機)生成一對密鑰:#  ssh-keygen

2) 將客戶機的公鑰復制到服務端(被登陸主機)要登錄的用戶的 ~/.ssh/authorized_keys 文件中:#  ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.187.142

    注意:如果使用自己復制的方法,一定要注意.ssh目錄和authorized_keys文件的權限,前者是700,后者是600

3) 使用客戶機ssh連接服務端或者使用ssh協議認證的程序即可實現免密,免交互

   注意:要想兩端登錄同時免密,就在主機B(被登陸機)也創建密鑰然后將公鑰拷貝到主機即可。

 

個人公眾號(linuxjsz)

專注IT技術、知識分享,面試資源共享、講解

只做全網最比心的公眾號,歡迎你的關注!

微信公眾號


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM