天天看點

淺談遠端登入時,ssh的加密原理

登入方式主要有兩種:

1、基于使用者密碼的登入方式:

加密原理:

當伺服器知道使用者請求登入時,伺服器會把自己的公鑰發給使用者,ssh會将伺服器的公鑰存放在用戶端的~/.ssh/known_hosts檔案下, 使用者會根據伺服器給它發的公鑰進行加密,加密好好之後傳回給伺服器,伺服器用自己的私鑰解密,如果密碼正确,則使用者會成功登入到伺服器上。

如果伺服器改變了自己的公鑰,用戶端想要登入時必須删除自己~/.ssh/known_hosts檔案下的舊内容,重新擷取伺服器新的公鑰。隻要你知道伺服器上的使用者和密碼,就可以成功登入到遠端伺服器上。

           指令格式: # ssh [email protected]

           在你第一次登入時,界面上會出現如下圖的情形:

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

它會給你提示:你确定你要繼續連結嗎?,這時,你輸入yes就好。接下來會讓你輸入密碼,隻要正确輸入就可成功登入。

2、基于密鑰的登入方式:

加密原理:

你自己事先得建立一對密鑰,把自己的公鑰放在你需要登入的伺服器上。當用戶端需要請求密鑰驗證登入伺服器時,伺服器收到請求後,伺服器就用公用密匙 加密一段随機字元串并把它發送給用戶端。用戶端收到加密後的随機字元串之後就可以用用戶端的的私鑰加密再把它發送給伺服器,如果伺服器上你事先存放的公鑰 解密成功則證明使用者是可信的,直接允許登入,不再要求密碼。

擷取自己密鑰對的指令格式:$ ssh-keygen

運作上面的指令以後,系統會出現一系列提示,可以一路回車。其中有一個問題是,要不要對私鑰設定密碼(passphrase),如果擔心私鑰的安全,這裡可以設定一個。

指令完成後,在~/.ssh/目錄下會生成兩個新檔案:id_rsa.pub和id_rsa。前者存放你自己的公鑰,後者存放你自己的私鑰。

然後将自己的公鑰傳到伺服器上,該指令格式為:$ ssh-copy-id [email protected]

成功登入後,重新開機伺服器ssh服務:   $ systemctl  restart  ssh.service

接下來就可以遠端操控伺服器了。