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

2022-05-14 04:44:44 字數 1527 閱讀 2898

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

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

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

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

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

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

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

在ssh中,只需公鑰放在伺服器a上,那麼你就可以通過私鑰登入伺服器a。

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

(以下認證流程來自部落格:ssh 公鑰私鑰認證操作及原理)

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

ac客戶端公鑰

bc客戶端金鑰

as伺服器公鑰

bs伺服器金鑰

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

會話金鑰(session key)生成客戶端請求連線伺服器,伺服器將 as 傳送給客戶端。

伺服器生成會話id(session id),設為 p,傳送給客戶端。

客戶端生成會話金鑰(session key),設為 q,並計算 r = p xor q。

客戶端將 r 用 as 進行加密,結果傳送給伺服器。

伺服器用 bs 進行解密,獲得 r。

伺服器進行 r xor p 的運算,獲得 q。

至此伺服器和客戶端都知道了會話金鑰q,以後的傳輸都將被 q 加密。

認證伺服器生成隨機數 x,並用 ac 加密後生成結果 s(x),傳送給客戶端

客戶端使用 bc 解密 s(x) 得到 x

客戶端計算 q + x 的 md5 值 n(q+x),q為上一步得到的會話金鑰

伺服器計算 q + x 的 md5 值 m(q+x)

客戶端將 n(q+x) 傳送給伺服器

伺服器比較 m(q+x) 和 n(q+x),兩者相同則認證成功

(實驗環境:ubuntu 17)

sudo apt-get install ssh

(若沒有該目錄,請建立。)

cd ~/.ssh

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

(假如設定了,後面通過私鑰連線伺服器時,則需要輸入金鑰對的密碼。)

ssh-keygen -t rsa

(下面指令的115.115.115.115是伺服器ip,lgq是你想登入伺服器的使用者名稱)

scp id_rsa.pub [email protected]:~/

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

ssh [email protected]

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

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

使用ssh公鑰實現免密碼登入

ssh無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。首先以root賬戶登陸為例。1.在a機下生成公鑰 私鑰對。root a ssh ...

使用ssh公鑰實現免密碼登入

ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以centos為例。有機器a 192.168.1.155 b 192.168.1.181 現想a通過ssh免密碼登入到b。首先以root賬戶登陸為例。1.在a機下生成公鑰 私鑰對。root a ssh...

用ssh公鑰實現免密碼登入

ssh 無密碼登入要使用公鑰與私鑰。linux下可以用用ssh keygen生成公鑰 私鑰對,下面我以ubuntu為例。有機器a 10.0.2.1 b 10.0.2.100 現想a通過ssh免密碼登入到b。首先以kube賬戶登陸為例。ssh keygen t rsa p p表示密碼,p 就表示空密碼...