關於ssh的介紹

來源:互聯網
上載者:User

標籤:傳輸   檢測   https   服務端   傳統   手動   color   沒有   基本原理   

最近看到一篇關於介紹ssh講得很清晰的文章,這裡來記錄一下加深一下印象:

 

基本原理:

SSH(Secure Shell)是一套協議標準,可以用來實現兩台機器之間的安全登入以及安全的資料傳送,其保證資料安全的原理是非對稱式加密

傳統的對稱式加密使用的是一套秘鑰,資料的加密以及解密用的都是這一套秘鑰,可想而知所有的用戶端以及服務端都需要儲存這套秘鑰,泄露的風險很高,而一旦秘鑰便泄露便保證不了資料安全。

非對稱式加密解決的就是這個問題,它包含兩套秘鑰 - 公開金鑰以及 私密金鑰,其中公開金鑰用來加密,私密金鑰用來解密,並且通過公開金鑰計算不出私密金鑰,因此私密金鑰謹慎儲存在服務端,而公開金鑰可以隨便傳遞,即使泄露也無風險。

保證SSH安全性的方法,簡單來說就是用戶端和服務端各自產生一套私密金鑰和公開金鑰,並且互相交換公開金鑰,這樣每一條發出的資料都可以用對方的公開金鑰來加密,對方收到後再用自己的私密金鑰來解密。

 

由上一張圖可以看出來,兩台機器除了各自的一套公、私密金鑰之外,還儲存了對方的公開金鑰,因此必然存在一個交換各自公開金鑰的步驟。

 

 

 

首次建立串連的時候的公開金鑰交換:

建立串連時的公開金鑰交換,實際上並不是簡單地交換公開金鑰,而是存在專門的演算法,這一步在首次串連時,資料傳送之前發生。

  1. 用戶端發起連結請求
  2. 服務端返回自己的公開金鑰,以及一個會話ID(這一步用戶端得到服務端公開金鑰)
  3. 用戶端產生金鑰組
  4. 用戶端用自己的公開金鑰異或會話ID,計算出一個值,並用服務端的公開金鑰加密
  5. 用戶端發送加密後的值到服務端,服務端用私密金鑰解密
  6. 服務端用解密後的值異或會話ID,計算出用戶端的公開金鑰(這一步服務端得到用戶端公開金鑰)
  7. 至此,雙方各自持有三個秘鑰,分別為自己的一對公、私密金鑰,以及對方的公開金鑰,之後的所有通訊都會被加密

 

這裡有一個有趣的地方,兩台機器第一次使用SSH連結時,當服務端返回自己的公開金鑰(第2步)的時候,用戶端會有一條資訊提示,大意是無法驗證對方是否可信,並給出對方公開金鑰的MD5編碼值,問是否確定要建立連結。

這是因為SSH雖然傳輸過程中很安全,但是在首次建立連結時並沒有辦法知道發來的公開金鑰是否真的來自自己請求的伺服器,如果有人在用戶端請求伺服器後攔截了請求,並返回自己的公開金鑰冒充伺服器,這時候如果連結建立,那麼所有的資料就都能被攻擊者用自己的私密金鑰解密了。這也就是所謂的中間人攻擊

 

 

 

通過ssh來進行密碼登入:

ssh常用來遠程登入到別的機器,有兩種常用的方法,第一種便是用帳號密碼來登入:

  1. 服務端收到登入請求後,首先互換秘鑰,詳細步驟如上一節所述。
  2. 用戶端用服務端的公開金鑰加密帳號密碼並發送
  3. 服務端用自己的秘鑰解密後得到帳號密碼,然後進行驗證
  4. 服務端用用戶端的公開金鑰加密驗證結果並返回
  5. 服務端用自己的秘鑰解密後得到驗證結果

 

 

 

 

利用公開金鑰來登入:

這是第二種遠程登入別的機器的方法,就是利用公開金鑰來登入。

有時候並不是開發人員手動去串連伺服器,而是用戶端的程式需要串連到伺服器,這時候用密碼登入就不方便,一是需要處理輸入密碼的問題,二是需要想辦法安全的儲存密碼到程式裡,這種情況下便可以利用公開金鑰來進行無密碼登入。

或者說你經常要遠端連線到某個伺服器,又不想次次都輸入帳號和密碼,也可以採用這種方法:

  1. 用戶端使用者必須手動地將自己的公開金鑰添加到伺服器一個名叫authorized_keys的檔案裡,顧名思義,這個檔案儲存了所有可以遠程登入的機器的公開金鑰。
  2. 用戶端發起登入請求,並且發送一個自己公開金鑰的指紋(具有唯一性,但不是公開金鑰)
  3. 服務端根據指紋檢測此公開金鑰是否儲存在authorized_keys中
  4. 若存在,服務端便產生一段隨機字串,然後利用用戶端公開金鑰加密並返回
  5. 用戶端收到後用自己的私密金鑰解密,再利用服務端公開金鑰加密後發回
  6. 服務端收到後用自己的私密金鑰解密,如果為同一字串,則驗證通過

 

 

利用公開金鑰登入的關鍵是必須手動將用戶端的公開金鑰添加到服務端,比如GitHub便有這一步驟,添加了之後便可無密碼登入。

 

 

 

資料來自:解放號眾包平台

這是我看今日頭條的時候看到的一篇文章,所以這裡直接貼一個今日頭條中文章的地址:(本文基本是copy這篇過來的)

https://www.toutiao.com/a6605433008616899076/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1538185223&app=news_article&utm_source=weixin&iid=11692987337&utm_medium=toutiao_android&group_id=6605433008616899076

 

關於ssh的介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.