標籤:http 使用 檔案 資料 問題 工作
在Linux上工作,ssh是必須要瞭解的技術方法。它可以建立起多台主機之間的安全的加密傳輸,以進行遠端訪問、操控、傳輸資料。
ssh是什嗎?
SSH為Secure Shell的縮寫。為建立在應用程式層和傳輸層基礎上的安全性通訊協定。
傳統的網路服務程式,如FTP、POP和Telnet其本質上都是不安全的;因為它們在網路上用明文傳送資料、使用者帳號和使用者口令,很容易受到中間人(man-in-the-middle)攻擊方式的攻擊。就是存在另一個人或者一台機器冒充真正的伺服器接收使用者傳給伺服器的資料,然後再冒充使用者把資料傳給真正的伺服器。 而SSH是目前較可靠,專為遠程登入工作階段和其他網路服務提供安全性的協議。利用SSH協議可以有效防止遠端管理過程中的資訊泄露問題。透過SSH可以對所有傳輸的資料進行加密,也能夠防止DNS欺騙和IP欺騙。 SSH之另一項優點為其傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、POP、甚至為PPP提供一個安全的「通道」。 瞭解這麼多就好了,其實ssh串連也就是可以理解成經過加密的遠端存取啦。
ssh串連的驗證、加密方式
ssh串連是CS模型(用戶端-伺服器),用戶端發出串連申請,伺服器對用戶端進行驗證,再考慮是否接受串連申請。
ssh的安全加密方式的理論基礎是非對稱式加密體系。而非對稱式加密中,常見的一種就是RSA密碼編譯演算法。在使用ssh,務必先弄清楚非對稱式加密和rsa的演算法流程。詳情參見RSA密碼編譯演算法。
ssh有兩種層級的安全驗證:賬戶口令驗證、rsa加密驗證。詳細參數,可以在sshd_config設定檔中設定(Ubuntu是/etc/ssh/sshd_config,mac下是/etc/sshd_config)
帳號口令驗證
直接輸入所要登陸的使用者的口令是預設的方式。不需要修改設定檔。
如果直接從用戶端將使用者密碼傳輸到伺服器,那麼密碼資訊很容易被中間人截獲,從而實現重放攻擊。ssh的實現方式是:
1.用戶端向ssh伺服器發出請求,伺服器將自己的公開金鑰返回給用戶端;
2.用戶端用伺服器的公開金鑰加密自己的登入密碼,再將資訊發送給伺服器;
3.伺服器接收到用戶端傳送的密碼,用自己的私密金鑰解碼,如果結果正確,則同意登入,建立起串連。
這種方式還是有漏洞的,中間人可以假扮成伺服器,騙取用戶端的密碼。
RSA加密驗證
RSA加密驗證方式,充分利用了非對稱式加密體系的優勢,不需要在網路傳輸密碼,完全杜絕了中間人攻擊的可能。步驟如下:
準備工作:
1.用戶端先使用 ssh-keygen 命令,產生私密金鑰和公開金鑰。按照預設配置,私密金鑰會被儲存在~/.ssh/id_rsa中,公開金鑰則在~/.ssh/id_rsa.pub中。(一般別修改這裡的檔案)
2.用戶端通過安全的方式將公開金鑰發送給伺服器。在伺服器端,將用戶端發的公開金鑰寫入到~/.ssh/authorized_keys檔案末尾。
建立串連
1.用戶端發出申請。伺服器產生session金鑰組,返回通過對應用戶端的公開金鑰加密後的session公開金鑰。
2.用戶端用自己的密鑰解密資訊,得到session公開金鑰。
3.之後的資料互動,都通過對方方公開金鑰加密,對方收到資訊後,用其私密金鑰解密,實現安全加密過程。