ssh與非對稱加密

xOuOx發表於2015-12-05

非對稱加密與數字簽名

1.非對稱加密

在非對稱加密中有不同的金鑰:私鑰(private key)和公鑰(public key)。如果A和B進行通訊,A需要建立兩個金鑰:一個私鑰和一個公鑰,A把公鑰分發給社群,公鑰不需要保密(但需要提供身份驗證和資料完整性,防止他人冒充A)。 B向A傳送資訊是用A的公鑰加密明文,A收到後可用自己的金鑰解密。


 |          A       |                       |       B
 |                  |                       |
 |        私鑰(A)  |           不安全通道                 |      公鑰(A)
 | 明文<---------密文|<-------------------------------------|密文<-----------明文    

2.數字簽名

數字簽名用於驗證訊息傳送者資訊,當A向B傳送訊息是,B需要檢查傳送者的身份,這時A可以用自己的私鑰進行簽名,B可用A的公鑰進行驗證。

對應ssh命令

1.登陸遠端主機

遠端登陸主機"host"時,在本地輸入命令

ssh user_name@host_name  (hostname可以是主機的ip地址)

請求登陸host,這時會詢問是否接受host的公鑰,接收後會要求輸入你的登陸密碼,輸入的密碼會用host的公鑰進行加密,host接收加密後的登陸資訊後,會用自己的私鑰解密,確認後會允許登陸。這樣你的登陸資訊就不會洩露給他人(即便被他人截獲登陸資訊,但無host金鑰,所以無法獲得你的登陸資訊)。

2.生成自己的公鑰與私鑰

在本地輸入命令

ssh-keygen    

會在在目錄~/.ssh中生成私鑰: id_rsa, 公鑰: id_rsa.pub。

3.上傳公鑰與免密碼登陸(數字簽名)

輸入命令上傳公鑰到host

ssh-copy-id user_name@host_name  

host會最後一次要求你輸入密碼確認身份,密碼正確後會將公鑰加到host的/home/user_name/.ssh/authorized_keys檔案中,此後你再次登陸時,host會向你傳送資訊,你用自己的私鑰進行數字簽名後傳送給host,host用你的公鑰進行驗證,驗證成功後會允許登陸,不需要輸入密碼。

相關文章