Secure Shell (SSH) 仍然是連接到遠程 Linux 服務器和各種網絡設備的實際方式。隨著對 Ansible 等自動化技術的更大依賴,它的使用不僅沒有失去重要性,反而有所增加。
假設您的開發團隊在他們的測試環境中建立了一個新的網絡服務器,并且忽略了在服務器的防火墻中打開端口 80 和 443。團隊與您聯系,要求您解決問題。您可以使用 SSH 遠程訪問網絡服務器。您建立連接,在出現提示時輸入密碼并完成防火墻配置。它快速、簡單且安全。但是有更好的方法嗎?
本教程涵蓋實施和使用基于密鑰的身份驗證以支持更輕松的 SSH 身份驗證和改進的自動化。SSH 身份驗證方法可能是CompTIA Linux+和CompTIA Security+考試的主題。
在您的家庭實驗室中將本教程與兩個或多個基于 Linux 的虛擬機一起使用。熟悉基于密鑰的身份驗證的另一種好方法是在連接到Raspberry Pi計算機時使用它。這些設備是開始使用 Linux 的好方法。
SSH 的標準語法包括ssh命令、連接用戶的名稱以及目標設備的名稱或 IP 地址。之后,遠程系統提示輸入帳戶密碼。
圖 1:標準 SSH 連接的密碼挑戰
您現在已連接到系統,可以根據您當前的身份進行更改或使用sudo提升您的權限。
基于密鑰的身份驗證通過使用公鑰/私鑰對替換 SSH 身份驗證質詢中的“您知道的”密碼部分。這種非對稱加密唯一地標識了用戶。也許更重要的是,至少在自動化的情況下,它不需要手動輸入密碼。SSH 自動傳遞身份驗證密鑰。假設遠程系統接受密鑰,則身份驗證是立即且無聲的。
實施基于密鑰的身份驗證很簡單,包括三個步驟:
1.生成密鑰對
2.復制公鑰到遠程服務器
3.測試認證
您還可以編輯/etc/ssh/sshd_config文件以要求在您的遠程系統上進行基于密鑰的身份驗證。
以下是這三個實施步驟的更多詳細信息。
公鑰/私鑰對是一組在數學上相關的密鑰,可以唯一地標識用戶或計算機。Linux ssh-keygen命令生成密鑰。根據您組織的安全要求,您可以使用-t選項來創建各種類型的密鑰。選項包括 RSA、DSA 和 ECDSA。
使用以下命令在您將連接到遠程設備的客戶端計算機上創建密鑰對:
# ssh-keygen
檢查~/.ssh目錄中的密鑰。您將看到id_rsa(私鑰)和id_rsa.pub(公鑰)。密鑰名稱可能因所選的加密方法而異。
圖 2:ssh-keygen 命令生成公鑰/私鑰對
滾動到文件底部并觀察用戶名。請記住,這是遠程系統識別的用戶。
密鑰生成實用程序為您提供了設置密碼的機會。按兩次Enter跳過此提示。您可能不想設置密碼,尤其是當您在自動化環境中使用 SSH 時。
密鑰對現在駐留在您的客戶端計算機上。這可能是您辦公桌上用于遠程連接到您負責的各種設備的計算機。下一步是將公鑰復制到遠程系統。
Linux 也有針對此任務的特定命令。命令是ssh-copy-id。例如,要將用戶student的密鑰復制到遠程服務器192.168.1.101,請鍵入:
# ssh-copy-id學生@192.168.1.101
圖 3:ssh-copy-id 命令將用戶的公鑰復制到遠程服務器
遠程系統提示您輸入密碼。鍵入用于連接到目標服務器的用戶帳戶的密碼。如果一切順利,這是您最后一次必須輸入此密碼。
您可以檢查遠程系統的~/.ssh/authorized_keys文件并找到公鑰。
圖 4:公鑰文件的內容
測試新的身份驗證方法就像建立 SSH 連接一樣簡單。鍵入通常的ssh命令并觀察遠程系統不會向您詢問密碼。你只是連接!
圖 5:基于密鑰的 SSH 連接沒有密碼挑戰
SSH 連接在后臺傳遞公鑰,證明您的身份。
明顯的好處是易于連接。不再被要求輸入密碼很方便。然而,在自動化的背景下,基于密鑰的身份驗證使管理員不必輸入或嘗試保護文件中的密碼。自動化工具可以在管理員不在場的情況下使用 SSH 連接并完成它們的任務。很難夸大此功能在當今自動化世界中的重要性。
SSH 的基于密鑰的身份驗證肯定會改善您組織的安全狀況。要實施此方法,請更新遠程服務器上的/etc/ssh/sshd_config文件以要求基于密鑰的身份驗證并拒絕基于密碼的連接嘗試。
打開遠程服務器上的/etc/ssh/sshd_config文件進行編輯。找到讀取PubKeyAuthentication的節并將其編輯為yes。找到PasswordAuthentication的節并將其設置為no。
密碼認證號
PubKeyAuthentication 是
當您這樣做時,請考慮其他 SSH 安全最佳實踐,例如將用戶列入白名單和拒絕 root 帳戶的遠程連接。以下條目可能有助于更好地保護您的 SSH 連接。在生產環境中實施它們之前,請務必了解并測試它們。一個錯誤可能會停止與服務器的遠程連接。
PermitEmptyPasswords 否
PermitRoot登錄號
允許用戶 admin1
基于 SSH 密鑰的身份驗證對于當今的遠程管理和自動化任務至關重要。花幾分鐘清點您經常通過 SSH 連接的 Linux 服務器和網絡設備,然后創建一個密鑰對。將公鑰復制到這些系統。我還鼓勵您將這些目標設備配置為需要 SSH 密鑰進行身份驗證并拒絕基于密碼的嘗試。
如果您正在準備 CompTIA Linux+、CompTIA Security+ 或CompTIA Cyber??security Analyst (CySA+)等認證考試,請確保您可以識別與基于密鑰的身份驗證相關的組件和命令。在您的家庭實驗室環境中完成這些步驟,直到它們成為第二天性。