Can you summarize the following document?
        
  SSH以非對稱加密實現身份驗證。身份驗證有多種途徑,例如其中一種方法是使用自動生成的公鑰-私鑰對來簡單地加密網路連線,隨後使用密碼認證進行登入;另一種方法是人工生成一對公鑰和私鑰,通過生成的金鑰進行認證,這樣就可以在不輸入密碼的情況下登入。任何人都可以自行生成金鑰。公鑰需要放在待訪問的電腦之中,而對應的私鑰需要由使用者自行保管。認證過程基於生成出來的私鑰,但整個認證過程中私鑰本身不會傳輸到網路中。  SSH協議有兩個主要版本,分別是SSH-1和SSH-2。無論是哪個版本,核實未知金鑰來源都是重要的事情,因為SSH只驗證提供使用者是否擁有與公鑰相匹配的私鑰,只要接受公鑰而且金鑰匹配伺服器就會授予許可。這樣的話,一旦接受了惡意攻擊者的公鑰,那麼系統也會把攻擊者視為合法使用者。

  在類Unix系統中,已許可登入的公鑰通常儲存在使用者 /home 目錄的 ~/.ssh/authorized_keys 檔案中,該檔案只由SSH使用。當遠端機器持有公鑰,而本地持有對應私鑰時,登入過程不再需要手動輸入密碼。另外為了額外的安全性,私鑰本身也能用密碼保護。  私鑰會儲存在固定位置,也可以通過命令列引數指定(例如ssh命令的“-i”選項)。ssh-keygen是生成金鑰的工具之一。  SSH也支援基於密碼的身份驗證,此時金鑰是自動生成的。若客戶端和服務端從未進行過身份驗證,SSH未記錄伺服器端所使用的金鑰,那麼攻擊者可以模仿伺服器端請求並獲取密碼,即中間人攻擊。但是密碼認證可以禁用,而且SSH客戶端在發現新金鑰或未知伺服器時會向使用者發出警告。

  SSH的經典用途是登入到遠端電腦中執行命令。除此之外,SSH也支援隧道協議、埠對映和X11連線。藉助SFTP或SCP協議,SSH還可以傳輸檔案。  SSH使用客戶端-伺服器模型,標準埠為22。伺服器端需要開啟SSH守護程序以便接受遠端的連線,而使用者需要使用SSH客戶端與其建立連線。  大多數現代作業系統(包括macOS、大部分Linux、OpenBSD、FreeBSD、Solaris等系統)都提供了SSH,包括Windows系統也提供SSH程式(在Windows 10 1809版本之後)。在軟體層次,許多關於SSH的專有軟體、免費軟體和開源軟體被研發出來,如:  從雲端計算的角度上講,SSH能夠阻止一些因直接暴露在網際網路而產生的安全問題,在解決連線問題上發揮了重要作用。SSH隧道可以在網際網路、防火牆和虛擬機器之間提供一個安全的通道。

  

  芬蘭赫爾辛基理工大學的塔圖·于勒寧發現自己學校存在嗅探密碼的網路攻擊,便於1995年編寫了一套保護資訊傳輸的程式,並稱其為“secure shell”,簡稱SSH,設計目標是取代先前的rlogin、Telnet、FTP和rsh等安全性不足的協議。1995年7月,于勒寧以免費軟體的形式將其釋出。程式很快流行起來,截至1995年底,SSH的使用者數已經達到兩萬,遍佈五十個國家。  1995年12月,于勒寧創立了SSH通訊安全公司來繼續開發和銷售SSH。SSH的早期版本用到了很多自由軟體,例如GNU libgmp,但後來由SSH公司釋出的版本逐漸變成了專有軟體。  截至2000年,已經有兩百萬使用者使用SSH。

  1999年,開發者們希望使用自由版本的SSH,於是重新使用較舊的1.2.12版本,這也是最後一個採用開放原始碼許可的版本。隨後瑞典程式設計師Björn Grönvall基於這個版本開發了OSSH。不久之後,OpenBSD的開發者又在Grönvall版本的基礎上進行了大量修改,形成了OpenSSH,並於OpenBSD 2.6一起發行。從該版本開始,OpenSSH又逐漸移植到了其他作業系統上面。  截至2005年,OpenSSH是唯一一種最流行的SSH實現,而且成為了大量作業系統的預設元件,而OSSH已經過時。OpenSSH仍在維護,而且已經支援SSH-2協議。從7.6版開始,OpenSSH不再支援SSH-1協議。

  2006年,SSH-2協議成為了新的標準。與SSH-1相比,SSH-2進行了一系列功能改進並增強了安全性,例如基於迪菲-赫爾曼金鑰交換的加密和基於訊息鑑別碼的完整性檢查。SSH-2還支援通過單個SSH連線任意數量的shell會話。SSH-2協議與SSH-1不相容,由於更加流行,一些實現(例如lsh和Dropbear)只支援SSH-2協議。

  RFC 4253規定支援2.0及以前版本SSH的SSH伺服器應將其原始版本標為“1.99”。“1.99”並不是實際的軟體版本號,而是為了表示向下相容。

  SSH協議框架中最主要的部分是三個協議: 同時還有為許多高層的網路安全應用協議提供擴充套件的支援。  各種高層應用協議可以相對地獨立於SSH基本體系之外,並依靠這個基本框架,通過連線協議使用SSH的安全機制。

  在客戶端來看,SSH提供兩種級別的安全驗證。 在伺服器端,SSH也提供安全驗證。 在第一種方案中,主機將自己的公用金鑰分發給相關的客戶端,客戶端在訪問主機時則使用該主機的公開金鑰來加密資料,主機則使用自己的私有金鑰來解密資料,從而實現主機金鑰認證,確保資料的保密性。 在第二種方案中,存在一個金鑰認證中心,所有提供服務的主機都將自己的公開金鑰提交給認證中心,而任何作為客戶端的主機則只要儲存一份認證中心的公開金鑰就可以了。在這種模式下,客戶端必須訪問認證中心然後才能訪問伺服器主機。

  SSH協議框架中設計了大量可擴充套件項,比如使用者自定義演算法、客戶自定義金鑰規則、高層擴充套件功能性應用協議。這些擴充套件大多遵循IANA的有關規定,特別是在重要的部分,像命名規則和訊息編碼方面。
Secure Shell(安全外殼協議,簡稱SSH)是一種加密的網路傳輸協議,可在不安全的網路中為網路服務提供安全的傳輸環境。SSH通過在網路中建立安全隧道來實現SSH客戶端與伺服器之間的連線。SSH最常見的用途是遠端登入系統,人們通常利用SSH來傳輸命令列介面和遠端執行命令。SSH使用頻率最高的場合是類Unix系統,但是Windows作業系統也能有限度地使用SSH。2015年,微軟宣佈將在未來的作業系統中提供原生SSH協議支援,Windows 10 1803版本已提供OpenSSH工具。