SSH協議詳解


簡介

SSH只是一個協議,基於這個協議有不同的實現,這些實現中有開源,也有收費。

原理

普通網絡通信一般是明文通信,數據容易被中間人攔截並且解析,而SSH協議則提供了基於內容加密服務。

流程:

第一種:口令驗證登陸

        (1)客戶端向遠程主機發起登陸鏈接請求。

        (2)遠程主機收到用戶的登錄連接請求,然后把自己的公鑰發給客戶端。

        (3)客戶端收到這個公鑰,並使用這個公鑰,將登錄密碼加密后,發送到遠程主機。

        (4)遠程主機用自己的私鑰,解密登錄密碼,並驗證該密碼與當前要登陸的用戶密碼是否匹配,匹配就同意用戶登錄。

        缺陷:口令驗證,主動權在客戶端,真正的遠程主機可能會被攔截掉,客戶端訪問的可能是偽裝的遠程主機,此時客戶端收到的密鑰是偽裝機的,客戶端發送加密后的密碼后,會被偽裝機通過私鑰解密,此時偽裝機就獲取到了真實遠程主機的賬密,那么真實遠程主機的安全就受到了嚴重威脅。

        

第二種:密鑰驗證登陸

        前提:客戶端在本地生成非對稱密鑰(公鑰、私鑰)。並且將公鑰放到了遠程主機的.ssh/authorized_keys文件中。

        (1)客戶端向遠程主機發起登陸連接請求,附帶信息

                備注:網上對於附帶信息,我目前看到兩個版本,一個是:ip,用戶名;一個是:公鑰信息。對於第一種,我是肯定不贊同,客戶端物理位置不定,Ip會變,而且公鑰信息中根本沒有IP,用戶名等信息,所以用IP和用戶名在遠程主機中定位公鑰肯定不行;第二版本我比較贊同,但是目前還有待驗證。

        (2)遠程主機根據附帶的信息定位到客戶端對應的公鑰,然后生成一個隨機串並用該公鑰加密,然后將生成的加密串發送給客戶端。

        (3)客戶端收到遠程主機送來的加密串,然后用自己的私鑰解密,再將解密后的字符串送給遠程主機。

        (4)遠程主機接收到解密后的字符串,然后跟自己最初生成的字符串作比較,一樣則校驗成功,允許與客戶端建立登陸鏈接。

        

登陸命令行
ssh -p port user@host
user表示遠程服務的登錄用戶名,host表示遠程ip ,port表示遠程服務的端口號(默認為22,可省略)
---------------------
作者:Mote_
來源:CSDN
原文:https://blog.csdn.net/dreamwbt/article/details/80280557
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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