SSH服務登錄驗證

ssh服務登錄驗證有兩種方式:html

  1.基於用戶名和密碼shell

  2.基於密鑰centos

 

基於用戶名和密碼驗證過程:

  1)客戶端想ssh服務器發起請求,服務器會把本身的公鑰發送給客戶端,bash

  2)客戶端用服務器的公鑰加密本身的密碼,併發送給服務器服務器

  3)服務器用本身的私鑰解密獲得客戶端的密碼並驗證,若是密碼正確則登錄成功.併發

 

基於祕鑰驗證過程:

  1)客戶端生成一對祕鑰ssh

  2)客戶端把本身的公鑰傳送給服務器ide

  3)客戶端發送一個鏈接請求,信息包括ip和用戶名測試

  4)服務器去authorized_keys文件中查找相應記錄,若是有,就生成一個隨機字符串ui

  5)服務器使用客戶端的公鑰把隨機字符串加密後發送給客戶端

  6)客戶端使用私鑰解密,再把獲得的字符串發給服務器

  7)服務器對比此字符串是否與本身生成的字符串一致,若是一致就容許登錄

 

基於祕鑰認證示例:

兩臺主機之間:

  1)客戶端生成一對祕鑰

  命令格式

  ssh-keygen -t rsa [-P ''] [-f "~/.ssh/id_rsa"]

    -p 口令,可爲空

    -f 指定祕鑰存放路徑

  也能夠全部參數省略直接執行ssh-keygen

  ]# ssh-keygen

clip_image001

  執行後三次回車.會生成未加密的私鑰/root/.ssh/id_rsa和公鑰/root/.ssh/id_rsa.pub

 

  2)把公鑰文件傳輸至遠程服務器對應用戶的家目錄,若是寫錯成私鑰文件名,不用擔憂,傳過去的依然是公鑰.

  命令格式

    ssh-copy-id [-i [identity_file]] [user@]host

]# ssh-copy-id -i .ssh/id_rsa.pub root@172.18.7.77
root@172.18.7.77's password: 
Now try logging into the machine, with "ssh 'root@172.18.7.77'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

 

 

3)在服務器端查看/root/.ssh/

]# cat /root/.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAusWy2QOYUC5kuwG+lNO7mWqWO/lvyqhAB1jiEcpAlns//kxVkifRtfDrA0+u7Pi+/eenW/6g1ZA6iP1muyprNXa+F84QjAaIBVlJuizKzF1iVFDOULdbyVRkKxx5Z8rlmG8WPeDl/1q9yIRrjUD84am8FOHsT/tzFLbEoeKL8vd/F6V1FPqlI+DLO28LgQ/b1Q21lJRk/XB6YvmFain9qwlzB0VF4vKVAhwVRmzA6hCxS7zohIJe8Y+1pC654mKwERtaM6PBUYPr/l0iznfU5Dxsvr4d8hp9xe2tDkyi7xkS0wd0DOE7SGbgwqUKxh7iuA+qBdln2h8dtC0dqGPlaw== root@centos6.qt

說明已經傳輸成功

 

4)測試

  在客戶端直接執行

]# ssh 172.18.7.77
Last login: Thu Jan 4 21:45:22 2018 from 172.18.7.61

  便可免密碼直接登錄,不輸用戶名默認以當前登錄用戶身份嘗試登錄.

  使用Xshell或SecureCRT之類的客戶端軟件實現基於祕鑰登錄的原理與上文相同,只要經過客戶端軟件生成一個公鑰,並複製到服務器中,將公鑰內容追加到 ~/.ssh/authorized_keys中

  以後新建一個以祕鑰方式登錄的會話,則能夠免密碼直接登錄.

相關文章
相關標籤/搜索