服務(wù)器端開(kāi)啟ssh服務(wù),在端口22監(jiān)聽(tīng)客戶端請(qǐng)求
客戶端發(fā)出請(qǐng)求,如果是第一次與服務(wù)器建立連接,服務(wù)器端會(huì)向客戶端發(fā)送一個(gè)rsa key 而此rsa key會(huì)被記錄到服務(wù)器端的~/.ssh/known_hosts中,下次遠(yuǎn)程登錄服務(wù)器就不會(huì)出現(xiàn)以上的提示信息
客戶端接收到服務(wù)器端發(fā)送過(guò)來(lái)的rsa key后,就會(huì)采用與服務(wù)器端協(xié)商好的加密算法,生成會(huì)話密鑰(此會(huì)話密鑰用于加密客戶端與服務(wù)器端之間的會(huì)話),并用rsa key加密會(huì)話密鑰,并發(fā)送給服務(wù)器端。
服務(wù)器端就用對(duì)應(yīng)的私鑰解密已加密的會(huì)話密鑰,然后用此會(huì)話密鑰加密確認(rèn)信息,發(fā)送給客戶端。客戶端用會(huì)話密鑰解密加密的確認(rèn)信息,到此,密鑰交換成功和服務(wù)器認(rèn)證成功
接下來(lái)就是客戶端的認(rèn)證,客戶端認(rèn)證有兩種方法:
基于口令認(rèn)證:客戶端發(fā)送用會(huì)話密鑰加密的遠(yuǎn)程登入的用戶名與密碼,服務(wù)器接收到,用會(huì)話密鑰解密,并驗(yàn)證用戶名與密碼的正確性。基于密鑰認(rèn)證:口令認(rèn)證容易受“中間人”攻擊,而密鑰認(rèn)證安全性較好,用戶名與密碼不用在網(wǎng)上傳輸,被人破解。客戶端生成一對(duì)密鑰,此密鑰只用于客戶端的認(rèn)證,然后將公鑰內(nèi)容上傳到服務(wù)器端~/.ssh/authorized_hosts文件中。客戶端發(fā)出密鑰認(rèn)證請(qǐng)求,服務(wù)器端就會(huì)用客戶端的公鑰加密一段數(shù)據(jù),發(fā)送給客戶端,客戶端用對(duì)應(yīng)的私鑰解密,然后將數(shù)據(jù)與會(huì)話密鑰進(jìn)行散列運(yùn)算,生成摘要,發(fā)送給服務(wù)器端,服務(wù)器端就會(huì)用原始數(shù)據(jù)和會(huì)話密鑰,生成摘要,并對(duì)比兩個(gè)摘要是否一致,若一致,則客戶端認(rèn)證成功連接成功后,就可以遠(yuǎn)程登入主機(jī),執(zhí)行遠(yuǎn)程命令控制
1.客戶端生成一對(duì)密鑰 2.將公鑰上傳到服務(wù)器端,這里有兩種方法上傳 一種使用ssh-keygen命令:
查看服務(wù)器端的~/.ssh/authorized_hosts文件
另一種方法,在客戶端使用scp(基于ssh協(xié)議的文件復(fù)制工具)
在服務(wù)器端的操作,查看是否成功收到客戶端公鑰
然后將公鑰文件內(nèi)容導(dǎo)入~/.ssh/authorized_hosts文件中,如果~/.ssh/authorized_hosts(權(quán)限為600)文件不存在,就創(chuàng)建
3.測(cè)試
建議:客戶端認(rèn)證最好用基于密鑰認(rèn)證,禁止客戶端使用root身份登入主機(jī),可以修改配置參數(shù)
在學(xué)習(xí)過(guò)程中,參考很多關(guān)于ssh原理的文章,也許每個(gè)人理解的側(cè)重點(diǎn)不一樣,在理解過(guò)程中,出現(xiàn)很多疑問(wèn),最后發(fā)現(xiàn)一篇文章(https://translate.google.com.hk/translate?hl=zh-TW&sl=en&u=http://www.slashroot.in/secure-shell-how-does-ssh-work&PRev=search,此網(wǎng)站的訪問(wèn)需要翻墻)對(duì)ssh原理的解釋解決我的部分疑問(wèn),里面講解ssh1協(xié)議的工作原理,還有與ssh2的不同點(diǎn),對(duì)于里面講解的ssh2,我還是有點(diǎn)不明白,就去谷歌很多文章,但是都無(wú)法真正理解ssh2的工作原理,大概的工作原理還是能夠理解得到,所以就總結(jié)出這篇文章。
新聞熱點(diǎn)
疑難解答
圖片精選