OpenSSH是SSH(安全外殼)協議的免費開源實現。SSH協議系列可用於計算機之間的遠程控制或文件傳輸。傳統的實現該功能的方式,如telnet(終端模擬協議)、rcp ftp、rlogin和rsh都是極不安全的,密碼將以明文形式傳輸。OpenSSH提供了服務器端後臺程序和客戶端工具來加密遠程控制和文件傳輸過程中的數據,從而取代了原來的類似服務。
過去,我們使用rsh和telnet,因為登錄時包括ID和密碼在內的數據未經加密就傳輸到網絡上,這存在安全問題。即使在內聯網上,也存在網絡竊取和篡改等危險。SSH對包括密碼在內的所有數據進行加密,以實現更安全的遠程操作。在SSH中,由於協議標準不同,存在SSH1和SSH2兩個不同的版本。開發SSH2是為了避免SSH1使用的加密算法的許可證問題(現在這個許可證問題已經不存在了)。TLES 8采用開源的OpenSSH作為安裝SSH協議的應用程序。OpenSSH可以對應SSH1和SSH2的任何協議,但默認使用SSH2。
SSH主要由三部分組成:
同時,SSH協議框架還為許多高級網絡安全應用協議提供了擴展支持。它們之間的層級關系可以用下圖表示:
對於SSH這樣旨在提供安全通信的協議來說,完整的密鑰機制至關重要。由於SSH協議面向Internet網絡中主機之間的訪問和信息交換,因此主機密鑰成為基本的密鑰機制。換句話說,SSH協議要求使用該協議的每臺主機必須至少有壹個自己的主機密鑰對,服務提供商只有在對客戶端的主機密鑰進行身份驗證後才能允許其連接請求。壹個主機可以使用多個密鑰,對於不同的密鑰算法可以有不同的密鑰,但至少需要壹個密鑰,即DSS算法生成的密鑰。關於DSS算法,請參考FIPS-186文件。SSH協議中主機密鑰認證有兩種管理方案,如下圖所示:
每個主機必須有自己的主機密鑰,並且可以有多對密鑰。每對主機密鑰對包括公鑰和私鑰。如何在實際應用中使用這些密鑰並依靠它們實現安全功能?如上圖所示,在SSH協議框架中提出了兩種方案。
在第壹種方案中,主機將其公鑰分發給相關的客戶端,客戶端在訪問主機時使用主機的公鑰加密數據,主機使用其私鑰解密數據,從而實現對主機密鑰的認證並確定客戶端的可靠身份。如圖2(A)所示,用戶從主機A發起訪問主機B和主機C的操作,此時A成為客戶端,它必須事先配置主機B和主機C的公鑰,並在訪問時根據主機名查找相應的公鑰。對於被訪問的主機(即服務器端),只需確保其自身私鑰的安全存儲即可。
在第二種方案中,有壹個密鑰認證中心,系統中所有提供服務的主機都向認證中心提交自己的公鑰,而任何主機作為客戶端只需保留壹份認證中心的公鑰副本。在這種模式下,在訪問服務器主機之前,客戶端還必須向密鑰認證中心請求認證,然後才能正確連接到目的主機。
顯然,第壹種方法易於實現,但在客戶端上維護密鑰是壹件麻煩事,因為每壹次更改都必須在客戶端上反映出來;第二種方法完美地解決了管理和維護問題。但是,這種模式對認證中心的要求很高。要在互聯網上實現這樣的集中認證,光是確定權威就很麻煩。誰能決定壹切?但是,從長遠來看,在企業應用和商業應用領域采用集中認證的方案是必要的。
此外,SSH協議框架還允許泄露主機密鑰,即未經身份驗證的首次訪問。免身份驗證首次訪問是指當客戶端首次訪問主機時,主機不會檢查主機密鑰,而是向客戶端發出壹份公鑰副本,因此在將來的訪問中必須使用該密鑰,否則將被視為非法,其訪問將被拒絕。
在整個通信過程中,為了實現SSH的安全連接,服務器和客戶端必須經歷以下五個階段:
*版本號協商階段,SSH目前包括SSH1和SSH2,雙方通過版本協商確定要使用的版本。
*在密鑰和算法協商階段,SSH支持多種加密算法,雙方根據本地端和對等端支持的算法協商最終算法。
*認證階段:SSH客戶端向服務器發起認證請求,服務器對客戶端進行認證。
*會話請求階段,認證通過後,客戶端向服務器發送會話請求。
*交互會話階段,會話請求通過後,服務端和客戶端交換信息。
q 1:SSH的版本和差異。
SSH2避免了RSA的專利問題,修復了CRC的缺陷。SSH2用數字簽名算法(DSA)和Diffie-Hellman(DH)取代RSA來完成對稱密鑰的交換,HMAC取代CRC。同時,SSH2增加了AES和Twofish等對稱加密算法。
到目前為止,SSH(安全SHell)有兩個不兼容的版本——SSH 1和SSH2。SSH1分為兩個版本:1.3和1.5。SSH1使用DES、3DES、Blowfish和RC4等對稱加密算法來保護數據安全傳輸,而對稱加密算法的密鑰通過非對稱加密算法(RSA)進行交換。SSH1使用循環冗余校驗碼(CRC)來確保數據的完整性,但後來發現這種方法存在缺陷。
有關更多信息,請參考SSHv1協議和SSHv2協議
Q2:什麽是HMAC?
A2: HMAC(哈希消息認證碼)、哈希消息認證碼和基於密鑰的哈希算法的認證協議。消息認證碼的原理是使用公共函數和密鑰生成壹個固定長度的值作為認證標識符,並使用該標識符來認證消息的完整性。使用密鑰生成壹個固定大小的小數據塊,即MAC,並將其添加到消息中,然後傳輸。接收者使用與發送者共享的密鑰進行身份驗證等等。
Q3:什麽是X11轉發?
A3: sh的X11轉發功能使X客戶端和X服務器能夠安全通信。使用X11轉發後,X客戶端到X服務器的數據先發送到ssh服務器,ssh服務器使用與ssh客戶端的安全通道轉發到ssh客戶端,然後ssh客戶端再轉發到X服務器。從X服務器到X客戶端的數據流是相同的。這裏,ssh服務器和ssh客戶端充當X客戶端和X服務器之間的數據中繼器。由於ssh服務器和X客戶端、ssh客戶端和X服務器壹般在同壹臺機器上,它們是壹種安全的進程間通信,ssh服務器和ssh客戶端之間的通信也是安全的,因此X客戶端和X服務器之間的通信是安全的。
問題4:什麽是TTY?
A4:終端是壹種基於字符的設備,有多種類型。tty通常用於簡稱各種類型的終端設備。Tty是Teletype的縮寫。電傳打字機是最早的終端設備,很像電傳打字機,由電傳公司生產。設備名放在特殊文件目錄/dev/中。
Q5:簡單描述壹下SSH操作的流程?