程序員必備Linux知識:SSH協議,你瞭解嗎?

程序員必備Linux知識:SSH協議,你瞭解嗎?

SSH 為 Secure Shell 的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息洩露問題。SSH最初是UNIX系統上的一個程序,後來又迅速擴展到其他操作平臺。SSH在正確使用時可彌補網絡中的漏洞。SSH客戶端適用於多種平臺。幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix,以及其他平臺,都可運行SSH。

簡單通俗來說,SSH是一種網絡協議,通常用於計算機之間的加密登錄。

如果一個用戶從本地計算機,使用SSH協議登錄另一臺遠程計算機,這種登錄模式是非常安全的,即使被中途截獲,密碼也不會洩露,因為密碼已經被加密過。SSH的另一個好處就是傳輸的數據是要進行壓縮的,所以可以加快傳輸的速度。不過最重要的特性還是安全性。

早期,互聯網通信都是明文傳輸通信,此時一旦被攻擊者截獲,內容就暴露無疑。1995年,芬蘭學者Tatu Ylonen設計了SSH協議,將登錄信息全部加密,成為互聯網安全的一個基本解決方案,迅速在全世界獲得推廣,目前已經成為Linux系統的標準配置。

需要指出的是,SSH只是一種協議,存在多種實現,既有商業實現,也有開源實現。而OpenSSH,它是自由開源軟件,應用非常最廣泛。

程序員必備Linux知識:SSH協議,你瞭解嗎?

文字接口連接服務器:SSH服務器

  • SSH(Secure Shell Protocol,安全的殼程序協議),通過數據包加密技術將等待傳輸的數據包加密後再傳輸到網絡上進行安全傳輸;

  • 提供兩個服務器功能:

  • 類似Telnet的遠程連接使用Shell的服務器,通常稱為的SSH;

  • 類似FTP服務的Sftp-Server,可以提供更安全的FTP文件傳輸服務;

連接加密技術簡介

  • “非對稱加密技術”:通過兩把不一樣的公鑰和私鑰(Public and Private Key)來進行加密和解密的過程;

  • 公鑰(Public Key):提供給遠程主機進行數據加密的行為,大家都能取得你的公鑰來將數據加密;

  • 私鑰(Private Key):遠程主機使用你的公鑰加密的數據,在本地端就能使用私鑰來進行解密。由於私鑰很重要,因此不能外流的,只能保護在自己的主機上;

  • 在客戶端的角度,你必須要取得服務器端的公鑰,然後將自己的公鑰發送給服務器,最終在客戶端上的迷藥是由“服務器的公鑰+客戶端的私鑰”組成;

  • SSH協議有兩個版本,Version2由於加上了連接檢測機制,可以避免連接期間被插入惡意的攻擊碼;

  • SSH服務端和客戶端連接過程圖,如下:

  • 客戶端的秘鑰是隨機運算產生於本次連接當中的,所以這次的連接與下次的連接秘鑰可能會不一樣的;

  • 在客戶端的~./ssh/known_hosts中會記錄曾經連接過的主機的Public Key,用於確認已連接上正確的主機;

目前國內外SSH用途總結

  • 要登錄到遠程主機上的shell(替換Telnet和rlogin)

  • 為了在遠程主機上執行單個命令(替換rsh)

  • 為了設置自動(無密碼)登錄到遠程服務器(例如,使用OpenSSH )

  • 安全的文件傳輸

  • 結合rsync備份,有效且安全地複製和鏡像文件

  • 用於轉發或隧道化一個端口(不要與VPN在不同網絡之間路由數據包,或將兩個廣播域橋接成一個)混淆。

  • 用作完整的加密VPN。請注意,只有OpenSSH服務器和客戶端支持此功能。

  • 對於從遠程主機轉發X(可能通過多箇中間主機)

  • 用於通過與支持SOCKS協議的SSH客戶端的加密代理連接來瀏覽網頁。

  • 使用SSHFS將本地計算機上的目錄作為文件系統安全地掛載到遠程服務器上。

  • 用於通過上述一種或多種機制自動遠程監控和管理服務器。

  • 用於支持SSH的移動或嵌入式設備上的開發。

程序員必備Linux知識:SSH協議,你瞭解嗎?


分享到:


相關文章: