ssh 遠端連線的兩種驗證方式

2021-09-24 18:24:04 字數 2321 閱讀 1632

ssh 為 secure shell 的縮寫,由 ietf 的網路小組(network working group)所制定;ssh 為建立在應用層基礎上的安全協議。其目的是實現安全遠端登入以及其它安全網路服務

從客戶端來看,ssh提供兩種級別的安全驗證。一種是基於口令的安全驗證,另一種是基於金鑰的安全驗證。分別看一下兩種驗證方式的過程。

1,客戶端向服務端發起登入請求:ssh username@hostname

2,服務端收到客戶端的請求後,把自己的公鑰傳送給客戶端;(服務端的公鑰儲存在/etc/ssh/*.pub裡面)

the authenticity of host 'ssh-server.example.com (12.18.429.21)' can't be established.

rsa key fingerprint is 98:2e:d7:e0:de:9f:ac:67:28:c2:42:2d:37:16:58:4d.

are you sure you want to continue connecting (yes/no)?

上面的資訊說的是:無法確認主機ssh-server.example.com(12.18.429.21)的真實性,不過知道它的公鑰指紋,是否繼續連線?之所以用fingerprint代替key,主要是key過於長(rsa演算法生成的公鑰有1024位),很難直接比較。所以,對公鑰進行hash生成乙個128位的指紋,這樣就方便比較了。

如果輸入yes後,會出現如下資訊:

warning: permanently added 'ssh-server.example.com,12.18.429.21'

(rsa) to the list of known hosts.

password: (enter password)

該host已被確認,並被追加到檔案known_hosts中,然後就需要輸入密碼。(當known_hosts儲存了服務端的公鑰之後,客戶端後續連線該服務端就會比對儲存在known_hosts檔案裡的公鑰,從而確認是否為該服務端發來的公鑰)

4,客戶端輸入密碼,使用服務端發來的公鑰進行加密,傳送給服務端;

5,服務端收到客戶端的加密資訊,使用自己的私鑰進行解密比對,比對正確就給客戶端響應。

1,客戶端將自己的公鑰放到服務端的 authorized_keys 檔案中;

2,客戶端向服務端發起登入請求:ssh username@hostname

3,服務端收到客戶端的請求後,會在 authorized_keys 中匹配到客戶端的公鑰,並生成隨機數 r,用客戶端的公鑰對該隨機數進行加密,然後將加密資訊傳送到客戶端;

4,客戶端收到加密資訊後用私鑰進行解密,得到隨機數 r,然後對隨機數 r 和本次會話的 sessionkey 利用 md5 生成摘要 digest1,傳送給服務端;

5,服務端收到 digest1 後,也會對隨機數 r 和 sessionkey 利用同樣的摘要演算法生成 digest2,然後對比 digest1 和 digest2 是否相同,完成認證過程。

公鑰和私鑰到底哪個是用來加密,哪個是用來解密的,是否可以公鑰加密私鑰解密,同時也可以私鑰加密公鑰解密呢?

首先要明確兩個問題:(1)既可以公鑰加密私鑰解密,也可以私鑰加密公鑰解密;(2)加密解密和簽名驗證是兩個不同的概念。

1, 先來說加密解密:需要同時使用公鑰和私鑰的加密演算法是非對稱加密,最常見的便是rsa。

舉例說明非對稱加密:如果a想要給b秘密的發一條資訊,只需要b建立一套公鑰(盒子)和私鑰(鑰匙),盒子可以隨意分發,但是鑰匙只能b自己所有,當a想要給b發資訊時,只需要把資訊(紙條)通過b的公鑰加密(放入盒子裡鎖上),再由b用私鑰(鑰匙)進行解密(開啟盒子),即可獲取a傳送的資訊。此時如果c想要擷取資訊,但是由於沒有b的私鑰,c即使拿到了資訊也無法解密(只有盒子沒有鑰匙),從而保證了資料的安全性。

那麼b是否可以通過私鑰加密資訊,然後由a使用公鑰解密資訊呢?從原理上講,是可以的。 非對稱金鑰是可以用於雙向加解密的。但是我們為什麼不這麼用呢,很好理解,因為所謂公鑰,是公開的,不只a乙個人擁有,因此雖然a能夠正常讀取到資訊,但是其他人也可以解密該條資訊,從而無法保證資訊的安全性。但是簽名驗證就不同了。

舉例說明:a想要讓b確認某條資訊是由自己發出的,先將自己的公鑰傳送給b,然後用自己的私鑰對資訊進行簽名並傳送給b(比如將字串x用a的私鑰加密生成y,將x和y以及資訊都傳送給b),b收到資訊後用a的公鑰對簽名進行驗證,用a的公鑰解密y得到z,如果z=x,則驗證成功,說明資訊是由a發布的。

ssh 登入 SSH兩種登入驗證方式

ssh是一種協議標準,其目的是實現安全遠端登入以及其它安全網路服務。ssh登入主要分為兩個階段 1 協商客戶端和服務端雙方通訊所使用的共享金鑰,並用這個共享金鑰實現後續會話過程的對稱加密 2 使用非對稱加密方式驗證客戶端的身份。圖 1 交換共享秘鑰 1 客戶端發起tcp連線請求 2 伺服器返回其支援...

SSH的兩種登入方式

ssh客戶端使用的是xshell,windows環境。第一種方式,使用者名稱密碼方式 原理如下 xshell操作如下 第二種方式基於秘鑰的登入方式 現在拿伺服器a 192.168.204.192 訪問伺服器b 192.168.204.100 舉例 xshell操作如下 1.在伺服器a端生成rsa的公...

xp上遠端連線ubuntu的兩種方式

xp上遠端連線ubuntu的兩種方式 昨前天突然發現實驗室有一天伺服器沒有用,於是決定不讓它閒著。開始時上面已經安裝了windows server 2003,於是決定按照個ubuntu試試,開始安裝了個伺服器版的沒有介面感覺不爽,於是用師兄的8.04版光碟安了乙個。不過坐在伺服器前用直接使用的話,感...