- RHCSARHCE 紅帽Linux認證學習指南(第7版)EX200 & EX300
- (美)Michael Jang等
- 2429字
- 2020-11-29 00:30:05
認證目標4.04 使用基于密鑰的驗證保護SSH
第2章介紹了SSH客戶端程序,包括ssh、scp和sftp。本節的關注點是使用基于密鑰的驗證來保護SSH訪問。
因為SSH是遠程管理系統的一個重要工具,所以理解SSH如何加密客戶端與SSH服務器之間的通信的基礎知識是非常重要的。然后將介紹如何創建公鑰/私鑰對,使連接不會讓用戶口令處在風險中。但是,首先了解SSH配置命令和文件的基礎知識很有幫助。
4.4.1 SSH的配置命令
需要了解如下用于SSH的實用工具:
● sshd 守護進程服務,該服務必須運行,才能接收入站的SSH客戶端請求。
● ssh-agent 這是一個程序,用來保存用于數字簽名算法(Digital Signature Algorithm, DSA)、橢圓曲線DSA(Elliptic Curve DSA, ECDSA)和Rivest, Shamir, Adleman(RSA)驗證的私鑰。其思想是,在X會話或登錄會話開始時啟動ssh-agent命令,其他程序則作為ssh-agent程序的客戶端啟動。
● ssh-add 向驗證代理ssh-agent添加私鑰標識。
● ssh Secure Shell命令ssh是登錄到遠程機器的一種安全的方法,類似于Telnet或rlogin。此命令的基本用法在第2章中已經討論過。要用在基于密鑰的驗證中,需要在客戶端具有私鑰,在服務器具有公鑰。本節稍后將創建公鑰文件,如id_rsa.pub。將該文件復制到服務器,放到已授權用戶的主目錄中,即~/.ssh/authorized_keys。
● ssh-keygen 此實用工具為SSH驗證創建私鑰/公鑰對。ssh-keygen -t keytype命令將基于DSA、ECDSA或RSA協議創建一個密鑰對。
● ssh-copy-id 此腳本將公鑰復制到目標遠程系統中。
4.4.2 SSH客戶端配置文件
使用SSH配置的系統在兩個不同的目錄中包含配置文件。對于本地系統,基本的SSH配置文件存儲在/etc/ssh目錄中。但是,每個用戶的主目錄下的~/.ssh/子目錄中的文件同樣重要。
這些文件配置了給定用戶連接到遠程系統的方式。包含了DSA、ECDSA和RSA密鑰時,用戶的~/.ssh/子目錄中包含以下文件:
● authorized_keys 包含遠程用戶的一個公鑰列表。在此文件中有公鑰的用戶可以連接到遠程系統。在復制到此文件的每個公鑰的末尾包含系統用戶和名稱。
● id_dsa 包含基于DSA算法的本地私鑰。
● id_dsa.pub 包含用戶的本地公鑰,基于DSA算法。
● id_ecdsa 包含基于ECDSA算法的本地私鑰。
● id_ecdsa.pub 包含用戶的本地公鑰,基于ECDSA算法。
● id_rsa 包含基于RSA算法的本地私鑰。
● id_rsa.pub 包含用戶的本地公鑰,基于RSA算法。
● known_hosts 包含遠程系統的公共主機密鑰。用戶第一次登錄到系統時,會提示其接受遠程服務器的公鑰。在RHEL 7上,默認使用ECDSA協議來加密流量。遠程服務器上的對應公鑰存儲在/etc/ssh/ssh_host_ecdsa_key.pub文件中,被客戶端添加到其本地的~/.ssh/known_hosts文件中。
4.4.3 基本的加密通信
計算機網絡中的基本加密通常需要一個私鑰和一個公鑰。其原理與第10章將介紹的GPG通信相同。私鑰由所有者存儲,公鑰被發送給第三方。當正確配置密鑰對時,用戶可以使用自己的私鑰加密消息,第三方可使用對應的公鑰解密該消息。反過來也一樣:第三方可使用接收方的公鑰加密一個消息,而接收方可使用其私鑰解密該消息。SSH協議的工作方式類似:服務器將公鑰副本發送給客戶端,客戶端使用此密鑰解密流量并建立安全的通信渠道。
加密密鑰基于隨機數。數字極大(RSA密鑰通常為2048位或更多),所以入侵服務器系統幾乎是不可能的(至少對于使用PC而言如此)。私鑰和公鑰基于這些隨機數的一個相匹配的集合。
1.私鑰
私鑰必須是安全的。基于密鑰的驗證依賴于私鑰,且該私鑰只能被其用戶所有者訪問;私鑰存儲在其用戶所有者的主目錄下的~/.ssh子目錄中。為了驗證用戶,服務器向客戶端發送一個“質詢”,也就是執行一個加密操作的請求,該操作需要知道私鑰。當服務器收到客戶端對其質詢的響應后,就能夠解密消息,證明用戶身份的真實性。
2.公鑰
公鑰就是公共可用的密鑰。公鑰需要被復制到合適用戶的~/.ssh/子目錄下的authorized_keys文件中。
圖4-7中的例子列出了與SSH的用法有關的目錄和文件。

圖4-7 用戶的.ssh/子目錄中的密鑰
考試提示
大多數與SSH基于密鑰的驗證有關的常見問題都和文件權限有關。如圖4-7所示,私鑰的權限被設為600,公鑰的權限被設為644。另外,~/.ssh目錄的權限應該是700。
密鑰就像是一個口令,用來加密通信數據。但是,密鑰并不是標準的口令。試想一下要記憶用十六進制數字表達的1024位數字,如下所示:
308189028181 00D4596E 01DE A012 3CAD 51B7 7835 05A4 DEFC C70B 4382 A733 5D62 A51B B9D6 29EA 860B EC2B 7AB8 2E96 3A4C 71A2 D087 11D0 E149 4DD5 1E208382 FA58 C7DA D9B03865 FF6E 88C7 B672 51F55094 3B35 D8AA BC68 BBEB BFE3 9063 AE75 8B57 09F9 DCF8 FFA4 E32C A17F 82E9 7A4C 0E10 E62D 8A970845007B 169A 0676 E7CF 5713
私鑰是類似的,但是必須保持私鑰的私有性,否則整個系統就會失敗。保持私有意味著其他人不應該能夠訪問服務器系統。如果PC是公共的,那么需要使用口令短語(口令)來保護私鑰。稍后將介紹設置口令短語的過程。不要忘記設置口令短語,否則必須創建新的密鑰對,并再次將公鑰復制到所有目標系統上。
4.4.4 為基于密鑰的驗證建立私鑰/公鑰對
ssh-keygen命令用來建立公鑰/私鑰對。雖然該命令默認創建一個RSA密鑰,但是也可以用它來創建DSA或ECDSA密鑰。例如,一些用戶可能需要DSA密鑰,以遵從美國政府的一些標準。圖4-8顯示了該命令序列的一個例子。

圖4-8 生成SSH密鑰對的命令
如圖所示,該命令提示輸入可選的口令短語來保護私鑰。當確認口令短語相同后,就將私鑰保存到id_rsa文件中,對應的公鑰保存在id_rsa.pub文件中。對于用戶michael,兩個文件都存儲在/home/michael/.ssh目錄中。
如果愿意,可以使用更多的位來建立RSA密鑰。在我們的測試中,能夠相當快速地建立多達8192位的密鑰對,即使虛擬機系統上只有一個虛擬CPU。
開始此過程的命令如下:
$ ssh-keygen -b 8192
另外,如果需要DSA密鑰,可以使用下面的命令。只允許使用1024位的DSA密鑰。執行此命令后,過程與圖4-8所示相同。
$ ssh-keygen -t dsa
下一步是將公鑰傳輸到遠程系統,可能是你管理的一個服務器。如果愿意通過網絡傳輸公鑰(每個連接一次),可以使用下面的命令:
$ ssh-copy-id -i .ssh/id_rsa.pub michael@tester1.example.com
嚴格來說,不使用-i選項時,ssh-copy-id命令默認傳輸最新創建的公鑰。前面的命令自動將本地RSA密鑰追加到遠程的~/.ssh/authorized_keys文件的末尾。/home/michael目錄中包含該文件。當然,可以選擇用IP地址替換主機名。
考試提示
有時,將密鑰對復制到遠程系統后,在嘗試登錄時,可能得到一個“agent admitted failure to sign using the key”錯誤,后跟口令提示。為了解決這個問題,退出控制臺或GUI,然后重新登錄。大多數時候,ssh命令將提示輸入口令短語。
然后應該能夠立即連接到該遠程系統。在上例中,下面兩個命令都是正確的命令:
$ ssh -l michael tester1.example.com $ ssh michael@tester1.example.com
在控制臺中執行時,ssh命令使用下面的口令短語提示:
Enter passphrase for key '/home/michael/.ssh/id_rsa'
在基于GUI的命令行執行時,會使用一個窗口進行提示,如圖4-9所示。

圖4-9 提示輸入口令短語
- Kali Linux滲透測試全流程詳解
- Arch Linux Environment Setup How-to
- SharePoint 2013 WCM Advanced Cookbook
- Linux集群和自動化運維
- 高性能Linux服務器構建實戰:系統安全、故障排查、自動化運維與集群架構
- 數據中心系統工程及應用
- Microsoft Operations Management Suite Cookbook
- AWS Development Essentials
- 計算機系統:基于x86+Linux平臺
- INSTANT Galleria Howto
- 鴻蒙操作系統設計原理與架構
- 嵌入式微系統
- Responsive Web Design with AngularJS
- Administering ArcGIS for Server
- UNIX傳奇:歷史與回憶