一. 概念、定義:
* SSH是Secure Shell Protocol的簡寫,由IETF網絡工做小組(Network Working Group)制定。
* SSH在數據傳輸以前,將聯機數據包進行加密處理,纔會發出給服務端。
* SSH是unix/linux進行遠程控制或者傳輸文件的一種協議。
* SSH包括兩部分,SSH客戶端和SSHD服務端。
二. 特色:
* SSH是密文傳輸,較明文傳輸的telnet安全。
* SSH是基於TCP傳輸協議的,因此是可靠傳輸。
* SSH的默認端口是22,如要改變端口號,需在修改配置文件以後,加-p參數指定新端口進行ssh鏈接。
三. 鏈接過程:
基於帳戶密碼的鏈接方式:
1) 客戶端用會話密鑰加密用戶名、認證方法、密碼並將加密後的結果發至服務器端。
2) 服務器端使用會話密鑰解密獲得用戶名、密碼,進行覈對。若正確,則經過鏈接;若失敗,則返回認證失敗報文給客戶端。客戶端循環第一步,
直至達到最大鏈接次數,TCP鏈接關閉。
基於公鑰私鑰的鏈接方式:
1) 客戶端使用ssh-keygen生成一對公鑰和私鑰。
2) 客戶端將公鑰推送至服務端。ssh-copy-id -i ~/.ssh/id_rsa.pub server,即將本機的公鑰推送至server機的~/.ssh/authorized_keys裏。
3) 客戶端用會話密鑰加密用戶名、認證方法、公鑰並將加密後的結果發至服務器端。
4) 服務器端進行解密後,對比此公鑰是否存在於server機的~/.ssh/authorized_keys裏。若存在,經過驗證,進行下一步;若不存在,
則返回失敗信息。
5) 服務器端生成質詢碼,用客戶端公鑰進行一次加密,用會話密鑰進行二次加密,推送給客戶端。
6) 客戶端使用會話密鑰進行一次解密,用公鑰進行二次解密獲得質詢碼。將質詢碼用會話密鑰加密後從新發送給服務器端。
7) 服務器端使用會話密鑰解密後,判斷是不是本身的質詢碼。若是是,則免密登陸;若不是,則返回鏈接失敗的信息。linux