SSH 協議基礎

2021-05-25 09:11:31 字數 3608 閱讀 1502

ssh的英文全稱為secure shell,是ietf(internet engineering task force)的network working group所制定的一族協議,其目的是要在非安全網路上提供安全的遠端登入和其他安全網路服務。 我們可以簡單理解為:rlogin和telnet等的替代方案。ssh的使用場景如下圖所示,具體請參考下文ssh的框架。

ssh協議框架中最主要的部分是三個協議:

用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令,它不僅加密所有傳送的資料,而且「中間人」這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒。

在整個通訊過程中,為實現 ssh的安全連線,伺服器端與客戶端要經歷如下五個階段

伺服器開啟埠 22,等待客戶端連線。

客戶端向伺服器端發起 tcp初始連線請求,tcp連線建立後,伺服器向客戶端傳送第乙個報文,包括版本標誌字串,格式為「ssh-《主協議版本號》.《次 協議版本號》-《軟體版本號》」,協議版本號由主版本號和次版本號組成,軟體版本號主要是為除錯使用。

客戶端收到報文後,解析該資料報,如果伺服器端的協議版本號比自己的低,且客戶端能支援伺服器端的低版本,就使用伺服器端的低版本協議號,否則使用自己的協議版本號。

客戶端回應伺服器乙個報文,包含了客戶端決定使用的協議版本號。伺服器比較客戶端發來的版本號,決定是否能同客戶端一起工作。

如果協商成功,則進入金鑰和演算法協商階段,否則伺服器端斷開 tcp連線。

note: 版本號協商階段報文都是採用明文方式傳輸的。

伺服器端和客戶端分別傳送演算法協商報文給對端,報文中包含自己支援的公鑰演算法列表、加密演算法列表、mac(message authentication code,訊息驗證碼)演算法列表、壓縮演算法列表等;

伺服器端和客戶端根據對端和本端支援的演算法列表得出最終使用的演算法。

伺服器端和客戶端利用 dh交換(diffie-hellman exchange)演算法、主機金鑰對等引數,生成會話金鑰和會話 id。 

通過以上步驟,伺服器端和客戶端就取得了相同的會話金鑰會話id

note:

在協商階段之前,伺服器端已經生成 rsa或 dsa金鑰對,他們主要用於參與會話金鑰的生成。

伺服器端對客戶端進行認證,如果認證失敗,則向客戶端傳送認證失敗訊息,其中包含可以再次認證的方法列表。

客戶端從認證方法列表中選取一種認證方法再次進行認證。

該過程反覆進行, 直到認證成功或者認證次數達到上限, 伺服器關閉連線為止。

ssh提供兩種認證方式:

password認證:客戶端向伺服器發出 password認證請求,將使用者名稱和密碼加密後傳送給伺服器;伺服器將該資訊解密後得到使用者名稱和密碼的明文,與裝置上儲存的使用者名稱和密碼進行比較,並返回認證成功或失敗的訊息。

publickey 認證:採用數字簽名的方法來認證客戶端。目前,裝置上可以利用rsa和 dsa兩種公共金鑰演算法實現數字簽名。客戶端傳送包含使用者名稱、公共金鑰和公共金鑰演算法的 publickey 認證請求給伺服器端。伺服器對公鑰進行合法性檢查,如果不合法,則直接傳送失敗訊息;否則,伺服器利用數字簽名對客戶端進行認證,並返回認證成功或失敗的 訊息

ssh2.0還提供了 password-publickey 認證和 any 認證:

password-publickey 認證:指定該使用者的認證方式為 password 和 publickey認證同時滿足。客戶端版本為 ssh1的使用者只要通過其中一種認證即可登入;客戶端版本為 ssh2的使用者必須兩種認證都通過才能登入。

any認證:指定該使用者的認證方式可以是 password,也可以是 publickey。

伺服器等待客戶端的請求;

認證通過後,客戶端向伺服器傳送會話請求;

伺服器處理客戶端的請求。請求被成功處理後, 伺服器會向客戶端回應 ssh_smsg_success包,ssh進入互動會話階段;否則回應 ssh_smsg_failure包,表示伺服器處理請求失敗或者不能識別請求。

在這個模式下,資料被雙向傳送:

客戶端將要執行的命令加密後傳給伺服器;

伺服器接收到報文,解密後執行該命令,將執行的結果加密發還給客戶端;

客戶端將接收到的結果解密後顯示到終端上.

q1: ssh的版本和區別。

ssh2避免了rsa的專利問題,並修補了crc的缺陷。ssh2用數字簽名演算法(dsa)和diffie-hellman(dh)演算法代替rsa來完成對稱金鑰的交換,用hmac來代替crc。同時ssh2增加了aes和twofish等對稱加密演算法。

a1: ssh(secure shell)到目前為止有兩個不相容的版本——ssh1和ssh2。ssh1又分為1.3和1.5兩個版本。ssh1採用des、3des、 blowfish和rc4等對稱加密演算法保護資料安全傳輸,而對稱加密演算法的金鑰是通過非對稱加密演算法(rsa)來完成交換的。ssh1使用迴圈冗餘校驗 碼(crc)來保證資料的完整性,但是後來發現這種方法有缺陷。

& the sshv2 protocol

q2: 什麼是hmac?

a2: hmac(hash message authentication code) ,雜湊訊息鑑別碼,基於金鑰的hash演算法的認證協議。訊息鑑別碼實現鑑別的原理是,用公開函式和金鑰產生乙個固定長度的值作為認證標識,用這個標識鑑別 訊息的完整性。使用乙個金鑰生成乙個固定大小的小資料塊,即mac,並將其加入到訊息中,然後傳輸。接收方利用與傳送方共享的金鑰進行鑑別認證等。

q3: 什麼是x11 forwarding?

a3: sh的x11 forwarding特性可以使x client和x server安全地通訊。使用x11 forwarding後,從x client到x server方向的資料先被送至ssh server,ssh server利用和ssh client的安全通道**給ssh client,再由ssh client**給x server,從x server到x client的資料流同理。這裡ssh server和ssh client充當了x client和x server間資料的**器,由於ssh server和x client、ssh client和x server一般在同一臺機器上,它們之間是一種安全的程序間通訊,而ssh server和ssh client間的通訊也是安全的,所以x client和x server間的通訊就是安全的。

q4: 什麼是tty?

a4: 終端是一種字元型裝置,它有多種型別,通常使用tty來簡稱各種型別的終端裝置。tty是 teletype的縮寫。teletype是最早出現的一種終端裝置,很象電傳打字機,是由teletype公司生產的。裝置名放在特殊檔案目錄/dev/下。

q5: 簡單描述下ssh執行的過程?

a5:簡要過程如下:

SSH 協議基礎

ssh的英文全稱為secure shell,是ietf internet engineering task force 的network working group所制定的一族協議,其目的是要在非安全網路上提供安全的遠端登入和其他安全網路服務。我們可以簡單理解為 rlogin和telnet等的替代方...

SSH協議介紹

1 什麼是ssh ssh是英文secure shell的簡寫形式。通過使用ssh,你可以把所有傳輸的資料進行加密,這樣 中間人 這種攻擊方式就不可能實現了,而且也能夠防止dns欺騙和ip欺騙。使用ssh,還有乙個額外的好處就是傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。ssh有很多功能,它既可以...

ssh協議支援

1.sudo apt get update 完成系統的更新 2.cd etc init.d 進入這個資料夾看是否安裝了ssh服務 看是否有ssh資料夾 3.sudo apt get install openssh server 如果沒有安裝,執行這個命令,自動安裝 4.ls l grep wc l ...