ssh
ssh 為
secure shell
的縮寫,由 ietf 的
網路工作小組(network working group)所制定;ssh 為建立在應用層和傳輸層基礎上的安全協議。ssh 是目前較可靠,專為
遠端登入會話和其他網路服務提供安全性的協議 從
客戶端來看,ssh提供兩種級別的安全驗證。
第一種級別(基於口令的安全驗證)
只要你知道自己帳號和口令,就可以登入到遠端主機。所有傳輸的資料都會被加密,但是不能保證你正在連線的伺服器就是你想連線的伺服器。可能會有別的伺服器在冒充真正的伺服器,也就是受到「中間人」這種方式的攻擊。
具體過程:c(client)向s(server)發出連線請求,s將自己的公鑰返回給c,c拿到公鑰後
(這裡c並不能確定該公鑰是否是s的公鑰,所以存在漏洞。
如第一次使用winscp時,會彈出如下對話方塊
第二種級別(基於密匙的安全驗證)
需要依靠
密匙, 也就是你必須為自己建立一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要連線到ssh伺服器上,客戶端軟體就會向伺服器發出請求,請求用你的密匙 進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你傳送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就 用公用密匙加密「質詢」(challenge)並把它傳送給客戶端軟體。客戶端軟體收到「質詢」之後就可以用你的私人密匙解密再把它傳送給伺服器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網路上傳送口令。
第二種級別不僅加密所有傳送的資料,而且「中間人」這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒。
具體過程:c生成私鑰和公鑰(分別位於~/.ssh/id_rsa 和 ~/.ssh/id_rsa
.pub
),然後將公鑰傳送給s(這裡的做法是線下通過u盤等進行傳遞,或者使用第一種級別的口令驗證(上面說過了口令驗證存在漏洞)),s在拿到公鑰後會將其存放在 ~/.ssh/authorized_keys中。然後,當c向s傳送請求時,會彈出如下對話方塊
也就是,詢問是否確定為所要連線的服務端,選擇yes。此時,c會將自己的公鑰傳送給s,s收到公鑰後會查詢已經儲存的公鑰進行匹配,匹配成功後,生成session金鑰對,然後將session公鑰傳送給c。
此時,c和s都拿到了對方的公鑰,並且有了自己的私鑰,然後c使用s的公鑰加密,輸出給s,s使用自己的私鑰解密。反之s使用c的公鑰加密,c使用自己的私鑰解密。實現免密碼登入
struts的具體執行過程
struts有乙個 控制器actionservlet,負責處理使用者的url請求,actionservlet在web.xml檔案中配置,它繼承了httpservlet,其實就是乙個普通的servlet。actionservlet中有兩個方法,如下 process方法繼續呼叫requestproces...
scp v 檢視具體的過程
前幾天跟同事討論scp 多個檔案和 scp多個資料夾的壓縮包那個快。老大說,壓縮包快,壓縮包傳輸可以避免每個檔案的重建連線,不過檔案系統的遍歷 目錄建立 檢驗會有一些開銷。他建議我scp v看下具體傳輸的過程。第一次聽說還有 v這個引數,試驗如下 cbcq git master scp v test...
new運算的具體執行過程
function person name,age var p1 new person 小明 20 console.log p1 1.建立乙個空物件 var obj new object 2.讓person中的this指向obj,並執行person的函式體 var result person.call...