Linux SSH 基於密鑰交換的自動登錄原理簡介及配置說明


協商交互過程

  1.  客戶端向目標服務器發送登錄請求。在SSH 服務啟用了證書驗證登錄方式后,會優先通過證書驗證方式進行登錄驗證。 

  2. 目標服務器根據 SSH 服務配置,在用戶對應目錄及文件中讀取到有效的公鑰信息。
  3. 目標服務器生成一串隨機數,然后使用相應的公鑰對其加密。

  4. 目標服務器將加密后的密文發回客戶端。

  5. 客戶端使用默認目錄或 -i 參數指定的私鑰嘗試解密。

  6. 如果解密失敗,則會繼續嘗試密碼驗證等其它方式進行登錄校驗。如果解密成功,則將解密后的原文信息重新發送給目標服務器。意思類似於:“看,這是這段話的原文。我能讀懂發過來的密文,我擁有服務器的控制權,請讓我登錄。”

  7. 目標服務器對客戶端返回的信息進行比對。如果比對成功,則表示認證成功,客戶端可以登錄。如果對比失敗,則表示認證失敗,則會繼續嘗試密碼驗證等其它方式進行登錄校驗。

證書校驗交互登錄流程示意圖所示:

 

Linux客戶端演示登錄:

1、在客戶端本地生成一對兒密鑰:

[root@localhost ~]# ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
cb:e4:e8:69:19:86:f7:52:59:95:43:40:ce:c9:06:b9 root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|        .ooo..   |
|        .= .+    |
|         .*. .   |
|        E..      |
|     .  So       |
|    . +=o.       |
|     o.=+        |
|     .+..        |
|     .o.         |
+-----------------+

 

 

2、在客戶端,將公鑰復制到要登錄的遠程主機的某用戶的家目錄下的特定文件中:

[root@localhost ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.77.131
The authenticity of host '192.168.77.131 (192.168.77.131)' can't be established.
ECDSA key fingerprint is dd:6d:e8:68:72:c9:8f:d8:32:18:ba:19:6e:52:4a:60.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.77.131's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.77.131'"
and check to make sure that only the key(s) you wanted were added.

 

 

3、測試登錄:

[root@localhost ~]# ssh root@192.168.77.131
Last login: Sat Mar 25 21:03:27 2017 from 192.168.77.1
[root@localhost ~]# ip addr list ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:f0:98:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.77.131/24 brd 192.168.77.255 scope global dynamic ens37
       valid_lft 1280sec preferred_lft 1280sec
    inet6 fe80::41e6:5671:d095:3c24/64 scope link
       valid_lft forever preferred_lft forever
[root@localhost ~]# exit
logout
Connection to 192.168.77.131 closed.

 

 

 

Windows環境Xshell登錄演示:

  1. 打開Xshell程序。
  2. 單擊 工具 > 用戶密鑰管理者 ,再點擊 生成 。
  3. 在打開的密鑰創建向導中,選擇默認的 RSA 密鑰算法及密鑰長度(默認 2048 位)后,點擊 下一步 。
  4. 程序生成密鑰對后,點擊 下一步。
  5. 如前面所述,密鑰加密密碼留空:

 

 

 

 6、復制生成的公鑰到目標主機的/root/.ssh/authorized_keys 尾部追加

 

 

 

 

[root@localhost ~]# echo 'ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA1WPScj31fl+c8biyb9PbQILRX5s4fZkdaOAqy2d043edDkbVi0FHymyVELu5cIBmJ8oQIBnHAs9jQmzxyDNQoZ0hO3lUC6a9eqp0kgj/dX31FghJzCVK5+dE9qSvGu6nRz3wN5F/xvs/hTuFzipFBwB1C51lchdrUiZcDfSrqMkWhKcmF+axK0CKHSDo2lwxqYCcW9b1d7Ww==' >> /root/.ssh/authorized_keys

 

 7、復制完成后返回Xshell,輸入目標主機IP,用戶身份認證選擇公鑰認證:

 

點擊“確定” 就能連接上了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM