SSH(Secure Shell,安全外殼)是一種網(wǎng)絡安全協(xié)議,通過加密和認證機制實現(xiàn)安全的訪問和文件傳輸?shù)葮I(yè)務。傳統(tǒng)遠程登錄或文件傳輸方式,例如Telnet、FTP,使用明文傳輸數(shù)據(jù),存在很多的安全隱患。隨著人們對網(wǎng)絡安全的重視,這些方式已經(jīng)慢慢不被接受。SSH協(xié)議通過對網(wǎng)絡數(shù)據(jù)進行加密和驗證,在不安全的網(wǎng)絡環(huán)境中提供了安全的登錄和其他安全網(wǎng)絡服務。作為Telnet和其他不安全遠程shell協(xié)議的安全替代方案,目前SSH協(xié)議已經(jīng)被全世界廣泛使用,大多數(shù)設備都支持SSH功能。
目錄
SSH端口號是什么?
SSH是如何工作的?
使用PuTTY和OpenSSHSSH密鑰
SSH端口號是什么?
當SSH應用于STelnet,SFTP以及SCP時,使用的默認SSH端口都是22。當SSH應用于NETCONF時,可以指定SSH端口是22或者830。SSH端口支持修改,更改后當前所有的連接都會斷開,SSH服務器開始偵聽新的端口。
SSH是如何工作的?
SSH由服務器和客戶端組成,在整個通信過程中,為建立安全的SSH通道,會經(jīng)歷如下幾個階段:
連接建立
SSH服務器在指定的端口偵聽客戶端的連接請求,在客戶端向服務器發(fā)起連接請求后,雙方建立一個TCP連接。
版本協(xié)商
SSH協(xié)議目前存在SSH1.X(SSH2.0之前的版本)和SSH2.0版本。SSH2.0協(xié)議相比SSH1.X協(xié)議來說,在結構上做了擴展,可以支持更多的認證方法和密鑰交換方法,同時提高了服務能力。SSH服務器和客戶端通過協(xié)商確定最終使用的SSH版本號。
算法協(xié)商
SSH支持多種加密算法,雙方根據(jù)各自支持的算法,協(xié)商出最終用于產(chǎn)生會話密鑰的密鑰交換算法、用于數(shù)據(jù)信息加密的加密算法、用于進行數(shù)字簽名和認證的公鑰算法以及用于數(shù)據(jù)完整性保護的HMAC算法。
密鑰交換
服務器和客戶端通過密鑰交換算法,動態(tài)生成共享的會話密鑰和會話ID,建立加密通道。會話密鑰主要用于后續(xù)數(shù)據(jù)傳輸?shù)募用?,會話ID用于在認證過程中標識該SSH連接。
用戶認證
SSH客戶端向服務器端發(fā)起認證請求,服務器端對客戶端進行認證。SSH支持以下幾種認證方式:
密碼(password)認證:客戶端通過用戶名和密碼的方式進行認證,將加密后的用戶名和密碼發(fā)送給服務器,服務器解密后與本地保存的用戶名和密碼進行對比,并向客戶端返回認證成功或失敗的消息。
密鑰(publickey)認證:客戶端通過用戶名,公鑰以及公鑰算法等信息來與服務器進行認證。
password-publickey認證:指用戶需要同時滿足密碼認證和密鑰認證才能登錄。
all認證:只要滿足密碼認證和密鑰認證其中一種即可。
會話請求
認證通過后,SSH客戶端向服務器端發(fā)送會話請求,請求服務器提供某種類型的服務,即請求與服務器建立相應的會話。
會話交互
會話建立后,SSH服務器端和客戶端在該會話上進行數(shù)據(jù)信息的交互。
使用PuTTY和OpenSSH
PuTTY是Windows上經(jīng)典的免費SSH連接工具,通常用于使用SSH協(xié)議遠程登錄設備,最新版本可以在PuTTY官網(wǎng)下載。
OpenSSH是SSH協(xié)議的開源實現(xiàn),支持在Unix操作系統(tǒng)上運行,最新版本可以在OpenSSH官網(wǎng)下載。目前Windows10已經(jīng)包含OpenSSH客戶端和服務器軟件,可在“設置—應用—應用與功能—可選功能”中搜索安裝。
SSH密鑰
對稱加密和非對稱加密
提高安全性的基本方式就是加密,加密算法通過密鑰將明文轉(zhuǎn)換為密文進行安全傳輸。SSH在工作過程中結合使用了對稱加密和非對稱加密兩種類型的算法,通過事先生成的SSH密鑰來保證信息傳輸?shù)陌踩?。兩種加密算法的加解密過程見下圖。
對稱加密算法
非對稱加密算法
對稱加密算法使用同一個密鑰對數(shù)據(jù)進行加密和解密。SSH連接建立過程中生成的會話密鑰就是對稱密鑰,該對稱密鑰是由客戶端和服務器端基于共享的部分信息和各自的私有數(shù)據(jù)使用密鑰交換算法分別生成的。因為對稱加密算法加解密的速度很快,所以適用于傳輸大量數(shù)據(jù)的場景。
非對稱加密的發(fā)送和接收需要使用一對關聯(lián)的SSH密鑰,公鑰和私鑰。私鑰由生成的一方自己保管,公鑰可以發(fā)送給任何請求通信的其他人。發(fā)送方用收到的公鑰對自己的通信內(nèi)容進行加密,只有接收方可以使用私鑰進行解密獲取通信內(nèi)容。非對稱加密的私鑰不需要暴露在網(wǎng)絡中,安全性大大增加,但是加解密的速度比對稱密鑰慢得多。
SSH連接過程中的兩個階段使用了非對稱加密。一個是在密鑰交換階段,服務器和客戶端都生成了自己臨時的公鑰和私鑰,用于計算出同一個用于后續(xù)加密通信內(nèi)容的會話密鑰。另外一個就是在用戶認證階段,利用只有匹配的私鑰可以唯一解密公鑰加密的內(nèi)容這一特點,通過客戶端的公鑰私鑰對驗證客戶端的身份。
密鑰認證
SSH用戶認證最基本的兩種方式是密碼認證和密鑰認證。密碼認證是將自己的用戶名和密碼發(fā)送給服務器進行認證,這種方式比較簡單,且每次登錄都需要輸入用戶名和密碼。密鑰認證使用公鑰私鑰對進行身份驗證,實現(xiàn)安全的免密登錄,是一種廣泛使用且推薦的登錄方式。密鑰認證的基本原理是服務器端使用客戶端的公鑰對隨機內(nèi)容加密,客戶端使用自己的私鑰解密并發(fā)送給服務器以證實自己的身份,具體的過程見下圖。
SSH密鑰認證登錄流程
在進行SSH連接之前,SSH客戶端需要先生成自己的公鑰私鑰對,并將自己的公鑰存放在SSH服務器上。
SSH客戶端發(fā)送登錄請求,SSH服務器就會根據(jù)請求中的用戶名等信息在本地搜索客戶端的公鑰,并用這個公鑰加密一個隨機數(shù)發(fā)送給客戶端。
客戶端使用自己的私鑰對返回信息進行解密,并發(fā)送給服務器。
服務器驗證客戶端解密的信息是否正確,如果正確則認證通過。
審核編輯:湯梓紅
-
服務器
+關注
關注
12文章
9681瀏覽量
87260 -
網(wǎng)絡安全
+關注
關注
11文章
3295瀏覽量
61103 -
SSH
+關注
關注
0文章
193瀏覽量
16786 -
SSH協(xié)議
+關注
關注
0文章
5瀏覽量
1680
原文標題:一口氣把 SSH 原理搞懂了
文章出處:【微信號:5G通信,微信公眾號:5G通信】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
理解網(wǎng)絡端口號
嵌入式學習——ElfBoard ELF1板卡 修改ssh默認端口號的方法
i.MX6ULL——ElfBoard ELF1板卡 修改ssh默認端口號的方法
常用端口號對照表
SSH定義及應用
工業(yè)交換機端口號具有哪些結構特征
如何修改Linux系統(tǒng)的SSH端口
SSH端口號是什么?SSH原理詳解分析

評論