SSH 為Secure Shell的縮寫,由 IETF 的網(wǎng)絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協(xié)議。SSH 是目前較可靠,專為遠程登錄會話和其他網(wǎng)絡服務提供安全性的協(xié)議。利用 SSH 協(xié)議可以有效防止遠程管理過程中的信息泄露問題。SSH最初是UNIX系統(tǒng)上的一個程序,后來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網(wǎng)絡中的漏洞。SSH客戶端適用于多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺,都可運行SSH。
功能:可以把所有傳輸?shù)臄?shù)據(jù)進行加密,而且也能夠防止DNS欺騙和IP欺騙。同時傳輸?shù)臄?shù)據(jù)是經(jīng)過壓縮的,所以可以加快傳輸?shù)?a target="_blank" rel="nofollow">速度。
驗證:從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證)
只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸?shù)臄?shù)據(jù)都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器??赡軙袆e的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。
第二種級別(基于密匙的安全驗證)
需要依靠密匙,也就是你必須為自己創(chuàng)建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發(fā)出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發(fā)送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)并把它發(fā)送給客戶端軟件??蛻舳塑浖盏健百|詢”之后就可以用你的私人密匙解密再把它發(fā)送給服務器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網(wǎng)絡上傳送口令。
第二種級別不僅加密所有傳送的數(shù)據(jù),而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒[2]。
(所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的服務器接收你傳給服務器的數(shù)據(jù),然后再冒充你把數(shù)據(jù)傳給真正的服務器。)
層次:SSH 主要由三部分組成:
傳輸層協(xié)議 [SSH-TRANS]
提供了服務器認證,保密性及完整性。此外它有時還提供壓縮功能。 SSH-TRANS 通常運行在TCP/IP連接上,也可能用于其它可靠數(shù)據(jù)流上。 SSH-TRANS 提供了強力的加密技術、密碼主機認證及完整性保護。該協(xié)議中的認證基于主機,并且該協(xié)議不執(zhí)行用戶認證。更高層的用戶認證協(xié)議可以設計為在此協(xié)議之上。
用戶認證協(xié)議 [SSH-USERAUTH]
用于向服務器提供客戶端用戶鑒別功能。它運行在傳輸層協(xié)議 SSH-TRANS 上面。當SSH-USERAUTH 開始后,它從低層協(xié)議那里接收會話標識符(從第一次密鑰交換中的交換哈希H )。會話標識符唯一標識此會話并且適用于標記以證明私鑰的所有權。 SSH-USERAUTH 也需要知道低層協(xié)議是否提供保密性保護。
連接協(xié)議 [SSH-CONNECT]
將多個加密隧道分成邏輯通道。它運行在用戶認證協(xié)議上。它提供了交互式登錄話路、遠程命令執(zhí)行、轉發(fā) TCP/IP 連接和轉發(fā) X11 連接。
結構:SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。 用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。
服務端是一個守護進程(daemon),他在后臺運行并響應來自客戶端的連接請求。服務端一般是sshd進程,提供了對遠程連接的處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接。
客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全文件傳輸)等其他的應用程序。
他們的工作機制大致是本地的客戶端發(fā)送一個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發(fā)送密鑰給SSH的客戶端,本地再將密鑰發(fā)回給服務端,自此連接建立。SSH 1.x和SSH 2.x在連接協(xié)議上有一些差異。
一旦建立一個安全傳輸層連接,客戶機就發(fā)送一個服務請求。當用戶認證完成之后,會發(fā)送第二個服務請求。這樣就允許新定義的協(xié)議可以與上述協(xié)議共存。連接協(xié)議提供了用途廣泛的各種通道,有標準的方法用于建立安全交互式會話外殼和轉發(fā)(“隧道技術”)專有 TCP/IP 端口和 X11 連接。
SSH被設計成為工作于自己的基礎之上而不利用超級服務器(inetd),雖然可以通過inetd上的tcpd來運行SSH進程,但是這完全沒有必要。啟動SSH服務器后,sshd運行起來并在默認的22端口進行監(jiān)聽(你可以用 # ps -waux | grep sshd 來查看sshd是否已經(jīng)被正確的運行了)如果不是通過inetd啟動的SSH,那么SSH就將一直等待連接請求。當請求到來的時候SSH守護進程會產(chǎn)生一個子進程,該子進程進行這次的連接處理[4]。
注:以上摘抄百度百科https://baike.baidu.com/item/SSH/10407