當前位置:編程學習大全網 - 源碼下載 - SSH是什麽

SSH是什麽

SSH:安全外殼協議

壹、SSH介紹

什麽是SSH?

傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據, 別有用心的人非常容易就可以截 獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的攻 擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的服務器接收妳的傳給服務器的數據,然後再冒充妳把數據傳給真正的服務器。 服務器和妳之間的數 據傳送被“中間人”壹轉手做了手腳之後,就會出現很嚴重的問題。

SSH的英文全稱是Secure Shell。通過使用SSH,妳可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了, 而且也能夠防止DNS和IP欺騙。還有壹個 額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。 SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提 供壹個安全的“通道”。

最初SSH是由芬蘭的壹家公司開發的。但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。 OpenSSH是SSH的替代軟件,而且是免費的,可以預計將來會有越 來越多的人使用它而不是SSH。

SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。 用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。

SSH的安全驗證是如何工作的

從客戶端來看,SSH提供兩種級別的安全驗證。

第壹種級別(基於口令的安全驗證)只要妳知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密, 但是不能保證妳正在連接的服務器就是妳想連接的服務器。可能會有別的服務器在冒充真正的服務器, 也就是受到“中間人”這種方式的攻擊。

第二種級別(基於密匙的安全驗證)需要依靠密匙,也就是妳必須為自己創建壹對密匙,並把公用密匙放在需要訪問的服務器上。 如果妳要連接到SSH服務器 上,客戶端軟件就會向服務器發出請求,請求用妳的密匙進行安全驗證。服務器收到請求之後, 先在妳在該服務器的家目錄下尋找妳的公用密匙,然後把它和妳發 送過來的公用密匙進行比較。如果兩個密匙壹致, 服務器就用公用密匙加密“質詢”(challenge)並把它發送給客戶端軟件。 客戶端軟件收到“質 詢”之後就可以用妳的私人密匙解密再把它發送給服務器。

用這種方式,妳必須知道自己密匙的口令。但是,與第壹種級別相比,第二種級別不需要在網絡上傳送口令。

第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因為他沒有妳的私人密匙)。 但是整個登錄的過程可能需要10秒。

二、SSL介紹(Secure socket Layer & Security Socket Layer)

壹個應用程序的安全需求在很大程度上依賴於將如何使用該應用程序和該應用程序將要保護什麽。不過,用現有技術實現強大的、 壹般用途的安全通常是可能的。認證就是壹個很好的示例。

當顧客想從 Web 站點購買某個產品時,顧客和 Web 站點都要進行認證。顧客通常是以提供名字和密碼的方式來認證他自己。 另壹方面,Web 站 點通過交換壹塊簽名數據和壹個有效的 X.509 證書(作為 SSL 握手的壹部分)來認證它自己。 顧客的瀏覽器驗證該證書並用所附的公用密鑰驗證簽 名數據。壹旦雙方都認證了,則交易就可以開始了。

SSL 能用相同的機制處理服務器認證(就如在上面的示例中)和客戶機認證。 Web 站點典型地對客戶機認證不依賴 SSL — 要求用戶提供密碼是較容易的。而 SSL 客戶機和服務器認證對於透明認證是完美的, 對等機 — 如 p2p 應用程序中的對等機之間壹定會發生透明認證。

安全套接字層(Secure Sockets Layer (SSL)) ,SSL 是壹種安全協議,它為網絡(例如因特網)的通信提供私密性。SSL 使應用程序在通信時不用擔心被竊聽和篡改。 SSL 實際上 是***同工作的兩個協議:“SSL 記錄協議”(SSL Record Protocol)和“SSL 握手協議” (SSL Handshake Protocol)。“SSL 記錄協議”是兩個協議中較低級別的協議,它為較高級別的協議, 例如 SSL 握手協議對 數據的變長的記錄進行加密和解密。SSL 握手協議處理應用程序憑證的交換和驗證。

當壹個應用程序(客戶機)想和另壹個應用程 序(服務器)通信時,客戶機打開壹個與服務器相連接的套接字連接。然後, 客戶機和服務器對安全連接進行協商。作為協商的壹部分,服務器向客戶機作自我認 證。客戶機可以選擇向服務器作或不作自我認證。 壹旦完成了認證並且建立了安全連接,則兩個應用程序就可以安全地進行通信。按照慣例,我將把發起該通信的 對等機看作客戶機, 另壹個對等機則看作服務器,不管連接之後它們充當什麽角色。

名為 A 和 B 的兩臺對等機想安全地進行通 信。在我們簡單的 p2p 應用程序的環境中,對等機 A 想查詢對等機 B 上的壹個資源。 每個對等機都有包含其專用密鑰的壹個數據庫(名為 keystore)和包含其公用密鑰的證書。密碼保護數據庫的內容。 該數據庫還包含壹個或多個來自被信任的對等機的自簽名證書。 對等機 A 發起這 項事務,每臺對等機相互認證,兩臺對等機協商采用的密碼及其長度並建立壹個安全通道。完成這些操作之後, 每個對等機都知道它正在跟誰交談並且知道通道是 安全的。 SSL (Secure socket Layer)安全套接層協議主要是使用公開密鑰體制和X.509數字證書技術保護信息傳輸的機密性和完 整性, 它不能保證信息的不可抵賴性,主要適用於點對點之間的信息傳輸,常用Web Server方式。

安全套接層協議(SSL,Security Socket Layer)是網景(Netscape)公司提出的基於WEB應用的安全協議,它包括:服務器認證、 客戶認證(可選)、SSL鏈路上的數據

完整性和SSL鏈路上的數據保密性。對於電子商務應用來說,使用SSL可保證信息的真實性、 完整性和保密性。但由於SSL不對應用層的消息進行數字簽 名,因此不能提供交易的不可否認性,這是SSL在電子商務中使用的最大不足。 有鑒於此,網景公司在從Communicator 4.04版開始的所有瀏 覽器中引入了壹種被稱作“表單簽名(Form Signing)”的功能, 在電子商務中,可利用這壹功能來對包含購買者的訂購信息和付款指令的表單進行 數字簽名,從而保證交易信息的不可否認性。綜上所述, 在電子商務中采用單壹的SSL協議來保證交易的安全是不夠的,但采用"SSL+表單簽名"模式能夠 為電子商務提供較好的安全性保證。

------------------------------------------------------------------------------------------------

(SSH: Secure Shell Protocol)

安全外殼協議(SSH)是壹種在不安全網絡上提供安全遠程登錄及其它安全網絡服務的協議。Secure Shell,又可記為S S H,最初是U N I X系統上的壹個程序,後來又迅速擴展到其他操作平臺。S S H是壹個好的應用程序,在正確使用時,它可以彌補網絡中的漏洞。除此以外, S S H之所以酷,還有以下原因:S S H客戶端適用於多種平臺。幾乎所有的U N I X平臺—包括H P - U X、L i n u x、A I X、S o l a r i s、Digital UNIX、I r i x、S C O,以及其他平臺—都可以運行S S H。而且,已經有壹些客戶端(其中有些為測試版)可以運行於U N I X操作平臺以外,包括O S / 2、V M S、B e O S、J a v a、Wi n d o w s 9 5 / 9 8和Windows NT。這樣,妳就可以在幾乎所有的平臺上運行S S H客戶端程序了。對非商業用途它是免費的。許多S S H版本可以獲得源代碼,並且只要不用於商業目的,都可以免費得到。而且,U N I X版本也提供了源代碼,這就意味著任何人都可以對它進行修改。但是,如果妳選擇它用於商業目的,那麽無論使用何種版本的S S H,妳都得確認已經註冊並獲得了相應權限。絕大多數S S H的客戶端和守護進程都有壹些註冊限制。惟壹的S S H通用公***註冊(General Public License,G P L )版本是l s h,它目前還是測試版。通過I n t e r n e t傳送密碼安全可靠。這是S S H被認可的優點之壹。如果妳考察壹下接入ISP(Internet Service Provider,I n t e r n e t服務供應商)或大學的方法,壹般都是采用Te l n e t或P O P郵件客戶進程。因此,每當要進入自己的賬號時,妳輸入的密碼將會以明碼方式發送(即沒有保護,直接可讀),這就給攻擊者壹個盜用妳賬號的機會—最終妳將為他的行為負責。對應用的支持。由於S S H的源代碼是公開的,所以在U N I X世界裏它獲得了廣泛的認可。L i n u x,其源代碼也是公開的,大眾可以免費獲得,並同時獲得了類似的認可。這就使得所有開發者(或任何人)都可以通過補丁程序或b u g修補來提高其性能,甚至還可以增加功能。這也第壹部分獲得並安裝S S H意味著其性能可以不斷得到提高而無須得到來自原始創作者的直接技術支持。S S H替代了不安全的遠程應用程序。S S H是設計用來替代伯克利版本的r命令集的;它同時繼承了類似的語法。其結果是,使用者註意不到使用S S H和r命令集的區別。利用它,妳還可以幹壹些很酷的事。通過使用S S H,妳在不安全的網絡中發送信息時不必擔心會被監聽。妳也可以使用P O P通道和Te l n e t方式,通過S S H可以利用P P P通道創建壹個虛擬個人網絡( Virtual Private Network, V P N )。S S H也支持壹些其他的身份認證方法,如K e r b e r o s和安全I D卡等。

但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。 OpenSSH是SSH的替代軟件,而且是免費的,可以預計將來會有越 來越多的人使用它而不是SSH。

SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。 用SSH 2.x的客戶程序是不能連接到SSH 1.x的服務程序上去的。OpenSSH 2.x同時支持SSH 1.x和2.x。

SSH 主要有三部分組成:

傳輸層協議 [SSH-TRANS] 提供了服務器認證,保密性及完整性。此外它有時還提供壓縮功能。 SSH-TRANS 通常運行在 TCP/IP連接上,也可能用於其它可靠數據流上。 SSH-TRANS 提供了強力的加密技術、密碼主機認證及完整性保護。該協議中的認證基於主機,並且該協議不執行用戶認證。更高層的用戶認證協議可以設計為在此協議之上。

用戶認證協議 [SSH-USERAUTH] 用於向服務器提供客戶端用戶鑒別功能。它運行在傳輸層協議 SSH-TRANS 上面。當 SSH-USERAUTH 開始後,它從低層協議那裏接收會話標識符(從第壹次密鑰交換中的交換哈希 H )。會話標識符唯壹標識此會話並且適用於標記以證明私鑰的所有權。 SSH-USERAUTH 也需要知道低層協議是否提供保密性保護。

連接協議 [SSH-CONNECT] 將多個加密隧道分成邏輯通道。它運行在用戶認證協議上。它提供了交互式登錄話路、遠程命令執行、轉發 TCP/IP 連接和轉發 X11 連接。

壹旦建立壹個安全傳輸層連接,客戶機就發送壹個服務請求。當用戶認證完成之後,會發送第二個服務請求。這樣就允許新定義的協議可以與上述協議***存。連接協議提供了用途廣泛的各種通道,有標準的方法用於建立安全交互式會話外殼和轉發(“隧道技術”)專有 TCP/IP 端口和 X11 連接。

通過使用SSH,妳可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有壹個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、PoP、甚至為PPP提供壹個安全的"通道"。

SSH分為兩部分:客戶端部分和服務端部分。

服務端是壹個守護進程(demon),他在後臺運行並響應來自客戶端的連接請求。服務端壹般是sshd進程,提供了對遠程連接的處理,壹般包括公***密鑰認證、密鑰交換、對稱密鑰加密和非安全連接。

客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全文件傳輸)等其他的應用程序。

他們的工作機制大致是本地的客戶端發送壹個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發送密鑰給SSH的客戶端,本地再將密鑰發回給服務端,自此連接建立。剛才所講的只是SSH連接的大致過程,SSH 1.x和SSH 2.x在連接協議上還有著壹些差異。

SSH被設計成為工作於自己的基礎之上而不利用超級服務器(inetd),雖然可以通過inetd上的tcpd來運行SSH進程,但是這完全沒有必要。啟動SSH服務器後,sshd運行起來並在默認的22端口進行監聽(妳可以用 # ps -waux | grep sshd 來查看sshd是否已經被正確的運行了)如果不是通過inetd啟動的SSH,那麽SSH就將壹直等待連接請求。當請求到來的時候SSH守護進程會產生壹個子進程,該子進程進行這次的連接處理。

SSH:新的MVC軟件開發模式, SSH(Struts,Spring,Hibernate) Struts進行流程控制,Spring進行業務流轉,Hibernate進行數據庫操作的封裝,這種新的開發模式讓我們的開發更加方便、快捷、思路清晰!

  • 上一篇:《田忌賽馬》教學反思
  • 下一篇:linux socket怎麽檢測斷開
  • copyright 2024編程學習大全網