翻譯文章,原文:Understanding SSH workflow[1]

Telnet用于與遠(yuǎn)程服務(wù)器通信。但是,Telnet并不是一種安全的通信協(xié)議,因?yàn)樗皇褂萌魏伟踩珯C(jī)制,并且以純文本形式(包括密碼)在網(wǎng)絡(luò)/互聯(lián)網(wǎng)上傳輸數(shù)據(jù),因此任何人都可以嗅探數(shù)據(jù)包以獲取重要信息。因此,為了克服這個(gè)問(wèn)題,SSH誕生了。現(xiàn)在,讓我們繼續(xù)了解SSH。
什么是SSH?
SSH,也稱為安全外殼程序或安全套接字外殼程序,是一種網(wǎng)絡(luò)協(xié)議,可為管理員提供一種訪問(wèn)遠(yuǎn)程計(jì)算機(jī)的安全方式。SSH在兩方(客戶端和服務(wù)器)之間建立了加密保護(hù)的連接,對(duì)每一方進(jìn)行身份驗(yàn)證,并來(lái)回傳遞命令和輸出。
?

SSH是怎么工作的?
SSH協(xié)議使用對(duì)稱加密,非對(duì)稱加密和哈希來(lái)確保信息的傳輸。客戶端和服務(wù)器之間的SSH連接分為三個(gè)階段:
1.客戶端驗(yàn)證服務(wù)器2.生成會(huì)話密鑰以加密所有通信3.客戶端認(rèn)證
現(xiàn)在,我將在不同的部分中討論這些階段。
1.服務(wù)器驗(yàn)證
客戶端啟動(dòng)與服務(wù)器的SSH連接。服務(wù)器偵聽(tīng)默認(rèn)端口22(可以更改此端口)以進(jìn)行SSH連接。此時(shí),將驗(yàn)證服務(wù)器身份。有兩種情況:
1.如果客戶端是第一次訪問(wèn)服務(wù)器,則要求客戶端通過(guò)驗(yàn)證服務(wù)器的公共密鑰來(lái)手動(dòng)認(rèn)證服務(wù)器。服務(wù)器的公共密鑰可以使用 ssh-keyscan 命令找到,也可以在其他位置找到(WHERE?google!)。一旦密鑰被驗(yàn)證,服務(wù)器信息就會(huì)添加到客戶端計(jì)算機(jī)~/.ssh目錄中的known_hosts文件中。 known_hosts文件包含有關(guān)客戶端所有已驗(yàn)證服務(wù)器的信息。
2.如果客戶端不是第一次訪問(wèn)服務(wù)器,則將服務(wù)器的身份與known_hosts文件中先前記錄的信息進(jìn)行匹配以進(jìn)行驗(yàn)證。

2.生成會(huì)話密鑰
驗(yàn)證服務(wù)器后,雙方使用稱為 Diffie-Hellman[2] 算法的某種版本協(xié)商會(huì)話密鑰。該算法的設(shè)計(jì)方式是,雙方在會(huì)話密鑰的生成中均會(huì)做出同等的貢獻(xiàn)。生成的會(huì)話密鑰是共享對(duì)稱密鑰,即,相同的密鑰用于加密和解密。
3.客戶端認(rèn)證
最后階段涉及客戶端的身份驗(yàn)證。使用SSH密鑰對(duì)進(jìn)行身份驗(yàn)證。顧名思義,SSH密鑰對(duì)只不過(guò)是用于兩個(gè)不同目的的兩個(gè)密鑰對(duì)。一種是用于加密數(shù)據(jù)并可以自由共享的公鑰。另一個(gè)是私鑰,用于解密數(shù)據(jù),并且永遠(yuǎn)不會(huì)與任何人共享。
建立對(duì)稱加密后,將對(duì)客戶端進(jìn)行身份驗(yàn)證,如下所示:
1.客戶端首先向服務(wù)器發(fā)送要驗(yàn)證的密鑰對(duì)的ID。
2.服務(wù)器檢查客戶端嘗試登錄的帳戶的authorized_keys文件中的密鑰ID。
3.如果在文件中找到具有匹配ID的公鑰,則服務(wù)器將生成一個(gè)隨機(jī)數(shù),并使用該公鑰對(duì)數(shù)字進(jìn)行加密并發(fā)送此加密的消息。
4.如果客戶端具有正確的私鑰,它將解密該消息以獲得服務(wù)器生成的隨機(jī)數(shù)
5.客戶端將獲得的隨機(jī)數(shù)與共享會(huì)話密鑰結(jié)合在一起,并計(jì)算該值的MD5哈希值。
6.然后,客戶端將此MD5哈希發(fā)送回服務(wù)器,作為對(duì)加密號(hào)碼消息的答復(fù)。
7.服務(wù)器使用相同的共享會(huì)話密鑰和發(fā)送給客戶端的原始號(hào)碼自行計(jì)算MD5值。它將自己的計(jì)算結(jié)果與客戶端發(fā)回的計(jì)算結(jié)果進(jìn)行比較。如果這兩個(gè)值匹配,則證明該客戶端擁有私鑰,并且該客戶端已通過(guò)身份驗(yàn)證
密鑰的不對(duì)稱允許對(duì)客戶端進(jìn)行身份驗(yàn)證,因?yàn)榭蛻舳酥挥性诰哂姓_的關(guān)聯(lián)私鑰的情況下才能解密消息。

結(jié)論
該博客的主要思想是幫助讀者了解什么是ssh以及用戶嘗試登錄到遠(yuǎn)程服務(wù)器時(shí)發(fā)生的情況。
References
[1] Understanding SSH workflow: https://medium.com/@Magical_Mudit/understanding-ssh-workflow-66a0e8d4bf65
[2] Diffie-Hellman: https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange