遠(yuǎn)程登錄Linux除了可以使用用戶名密碼認(rèn)證外,我們還可以通過(guò)密鑰對(duì)認(rèn)證。也許你對(duì)如何配置密鑰認(rèn)證非常熟悉,但你是否了解這個(gè)密鑰對(duì)如何工作呢?
先來(lái)看一幅圖
對(duì)于準(zhǔn)備階段,大家并不陌生,就是將客戶端上的預(yù)先生成的公鑰放到服務(wù)端上去。
關(guān)于這個(gè)密鑰對(duì),我啰嗦兩句。其中公鑰用來(lái)加密,私鑰用來(lái)解密,只有和公鑰配對(duì)的私鑰才能解開(kāi)其公鑰加密的字符串。它們屬于非對(duì)稱加密。
說(shuō)到加密,我不得不提一下,加密的方式主要有兩種:
對(duì)稱加密(也稱為秘鑰加密)
非對(duì)稱加密(也稱公鑰加密)
所謂對(duì)稱加密,指加密解密使用同一套密鑰。如下圖所示:
Client:
Server:
對(duì)稱加密的加密強(qiáng)度高,很難破解。但是在實(shí)際應(yīng)用過(guò)程中不得不面臨一個(gè)棘手的問(wèn)題:如何安全地保存密鑰呢?尤其是考慮到數(shù)量龐大的Client端,很難保證密鑰不被泄露。一旦一個(gè)Client端的密鑰被竊取,那么整個(gè)系統(tǒng)的安全性也就不復(fù)存在。為了解決這個(gè)問(wèn)題,非對(duì)稱加密應(yīng)運(yùn)而生。非對(duì)稱加密有兩個(gè)密鑰:公鑰和私鑰。
再來(lái)看看公鑰、私鑰的協(xié)商交互過(guò)程:
① 如果SSH服務(wù)端開(kāi)啟了密鑰認(rèn)證,那么當(dāng)客戶端向目標(biāo)服務(wù)器發(fā)送登錄請(qǐng)求時(shí),服務(wù)端會(huì)優(yōu)先通過(guò)密鑰驗(yàn)證方式進(jìn)行登錄驗(yàn)證。
② SSH服務(wù)端會(huì)讀取~/.ss/authorized_keys里所有的公鑰信息,這里需要注意,公鑰存取的文件路徑是可以在SSH服務(wù)配置文件里進(jìn)行配置的。
③ SSH服務(wù)端會(huì)生成一串隨機(jī)數(shù),然后使用相應(yīng)的公鑰對(duì)其加密。
④ SSH服務(wù)端將加密后的密文發(fā)給客戶端。
⑤ 客戶端使用私鑰解密,私鑰存儲(chǔ)路徑通常為~/.ssh/id_rsa,當(dāng)然也可以使用-i選項(xiàng)指定,或者在SSH客戶端軟件(如Xshell或者M(jìn)obaxterm)里配置。
⑥ 客戶端如果解密成功,則會(huì)把解密后的隨機(jī)字符發(fā)送給服務(wù)端。如果解密失敗,則會(huì)繼續(xù)嘗試密碼驗(yàn)證等其它方式進(jìn)行登錄校驗(yàn)。
⑦ 服務(wù)端對(duì)客戶端返回的隨機(jī)字符串進(jìn)行比對(duì)。
⑧ 如果比對(duì)成功,則認(rèn)證成功,客戶端順利登錄。否則,會(huì)反饋登錄失敗。
審核編輯:湯梓紅
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209322 -
密鑰
+關(guān)注
關(guān)注
1文章
138瀏覽量
19753 -
公鑰
+關(guān)注
關(guān)注
0文章
22瀏覽量
12035 -
SSH
+關(guān)注
關(guān)注
0文章
188瀏覽量
16335 -
服務(wù)端
+關(guān)注
關(guān)注
0文章
66瀏覽量
7004
原文標(biāo)題:你知道SSH密鑰認(rèn)證是如何工作的嗎
文章出處:【微信號(hào):aming_linux,微信公眾號(hào):阿銘linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論