ssh 免密碼登錄 與 密鑰公鑰原理講解


前言

由於最近頻繁需要登錄幾個服務器,每次登錄都需要輸入密碼,故相對麻煩。

由於個人服務器用於實驗,故對安全性要求不是很高,故想實現ssh免密登錄。

通過閱讀ssh 公鑰私鑰認證操作及原理以及ssh公鑰登陸。成功實現了自己的需求。

下面來說下講解公鑰密鑰的工作原理以及ssh免密登錄的實現步驟。

 

公鑰密鑰原理概述

在課程計算機基礎中,我記得是學過公鑰密鑰的,公鑰和密鑰是同時生成的。

公鑰用於加密,私鑰用於解密。

公鑰是很多人可以持有,而密鑰只能自己持有。

在ssh中,只需公鑰放在服務器A上,那么你就可以通過私鑰登錄服務器A。

當你連接已放置你公鑰服務器A時,服務器A和客戶端之間大概存在以下認證流程。

以下認證流程來自博客ssh 公鑰私鑰認證操作及原理

為了說明方便,以下將使用這些符號。

 

Ac 客戶端公鑰
Bc 客戶端密鑰
As 服務器公鑰
Bs 服務器密鑰


認證過程分為兩個步驟。在認證之前,客戶端需要通過某種方法將公鑰 Ac 登錄到服務器上。

  1. 會話密鑰(session key)生成
    1. 客戶端請求連接服務器,服務器將 As 發送給客戶端。
    2. 服務器生成會話ID(session id),設為 p,發送給客戶端。
    3. 客戶端生成會話密鑰(session key),設為 q,並計算 r = p xor q。
    4. 客戶端將 r 用 As 進行加密,結果發送給服務器。
    5. 服務器用 Bs 進行解密,獲得 r。
    6. 服務器進行 r xor p 的運算,獲得 q。
    7. 至此服務器和客戶端都知道了會話密鑰q,以后的傳輸都將被 q 加密。
  2. 認證
    1. 服務器生成隨機數 x,並用 Ac 加密后生成結果 S(x),發送給客戶端
    2. 客戶端使用 Bc 解密 S(x) 得到 x
    3. 客戶端計算 q + x 的 md5 值 n(q+x),q為上一步得到的會話密鑰
    4. 服務器計算 q + x 的 md5 值 m(q+x)
    5. 客戶端將 n(q+x) 發送給服務器
    6. 服務器比較 m(q+x) 和 n(q+x),兩者相同則認證成功

 

ssh免密登錄實驗步驟

實驗環境:Ubuntu 17

1. 若還沒安裝ssh服務的同學,請先安裝。

sudo apt-get install ssh

本文博客地址:http://www.cnblogs.com/toulanboy/

 

2. 進入家目錄下的.ssh文件夾

若沒有該目錄,請創建。

cd ~/.ssh

 

3. 生成密鑰對

中途會讓你輸入密鑰對的密碼,由於我們想免密,故按回車跳過即可。

假如設置了,后面通過私鑰連接服務器時,則需要輸入密鑰對的密碼。

ssh-keygen -t rsa

 

4. 將客戶端.ssh目錄下的id_rsa.pub復制到服務器A的家目錄下

下面指令的115.115.115.115是服務器IP,lgq是你想登錄服務器的用戶名

scp id_rsa.pub lgq@115.115.115.115:~/

 

5. 在服務器A上,將客戶端的id_rsa.pub追加到服務器的ssh的認證列表中

cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

 

6. 客戶端后面直接可以通過私鑰免密登錄了。

ssh lgq@115.115.115.115

 

 

至此完畢。希望對你有幫助。

參考:ssh 公鑰私鑰認證操作及原理以及ssh公鑰登陸

 


免責聲明!

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



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