SSH 或 Secure Shell 是一種用於在兩台計算機之間通信和共享數據的協議。提供啟用密碼或無密碼(禁用)的身份驗證並加密兩台主機之間的通信。 使用 CentOS 服務器時,大部分時間都花在通過 SSH 連接到服務器的終端上。
本指南重點介紹為 CentOS 8 服務器設置基於 SSH 密鑰的身份驗證。 SSH 密鑰提供了一種與遠程服務器通信的簡單而穩定的方式,建議所有用戶使用。
在 Linux 上創建 SSH 密鑰
要生成新的 2048 位 RSA 密鑰對,請打開終端並運行以下命令:
ssh-keygen
按 Enter 鍵,您將看到以下輸出:
當您按 Enter 時,默認情況下,密鑰對保存在 your_home 文件夾的 .ssh 子目錄中。您可以指定備用路徑來存儲密鑰對,但建議您使用默認目錄來存儲密鑰對。
如果您之前在客戶端計算機上創建了密鑰對,系統將提示您覆蓋它。是或否的選擇完全取決於您,但請注意“y”選項。 如果選擇“y”選項,您將無法使用之前的密鑰對登錄服務器。
系統將提示您輸入密碼以添加一層安全保護,以防止未經授權的用戶訪問服務器。如果您不想輸入密碼,請按 Enter。
輸入密碼後,您將看到以下輸出:
現在 SSH 密鑰對已成功生成,運行以下命令進行驗證。
ls -l ~/.ssh/id_*.pub
上面的命令將輸出包含 SSH 密鑰對的文件的路徑。 如果您收到諸如“未找到此類文件或目錄”之類的錯誤,則說明密鑰對未成功創建,您需要重複該過程。
將 SSH 密鑰添加到遠程系統
創建密鑰對後,您需要將 SSH 密鑰添加到 CentOS 服務器。最快的方法是使用 ssh-copy-id 方法。在某些情況下, ssh-copy-id 方法可能在您的本地計算機上不可用。在這種情況下,您可以使用另一種方法將 SSH 密鑰添加到 CentOS 服務器。
添加 SSH 密鑰 ssh-copy-id
命令
在大多數情況下,您的本地計算機默認具有 ssh-copy-id 方法。僅當您對服務器具有基於密碼的 SSH 訪問權限時,此方法才有效。
ssh-copy-id [email protected]_主持人
我將以下內容用於我的服務器:
ssh-copy-id [email protected]
IP 地址是系統 IP。 如果鍵入 yes 並按 Enter,系統將提示您輸入遠程用戶的密碼。
當用戶完成所有步驟時,公鑰被複製到服務器。
添加不帶 ssh-copy-id 的 SSH 密鑰
如果您沒有在本地計算機上安裝 ssh-copy-id 方法(這種情況很少見),則需要運行此命令將 ssh 密鑰添加到您的服務器。
將以下內容用於本地服務器:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
如何使用 SSH 密鑰登錄服務器
現在您已經成功地將密鑰添加到服務器,您應該能夠在沒有用戶密碼的情況下登錄服務器。
$ssh [email protected]_IP地址
在我的服務器上,我使用以下命令:
ssh [email protected]
如果不設置密碼,則無需驗證即可登錄。這是登錄服務器的最快方式。如果沒有,您必須通過身份驗證階段。
第 3 步 – 如何禁用 SSH 密碼驗證
您可以通過禁用 SSH 密碼驗證來增加一層安全性。在開始該過程之前,請確保您對具有 sudo 權限且無需密碼的服務器具有 root 或非 root 訪問權限。
要禁用 SSH 密碼驗證,請先登錄服務器。
ssh [email protected]
然後打開並修改位於/etc/ssh/sshd_config中的SSH配置文件。
sudo nano /etc/ssh/sshd_config
打開配置文件後,進行以下更改:
PasswordAuthentication no
如果您刪除上面一行的# 符號和註釋並將其值設置為no,請取消註釋。
修改完SSH文件後,需要保存並關閉按Ctrl+X重啟SSH服務,命令如下:
sudo systemctl restart sshd
通過執行所有步驟成功禁用基於密碼的身份驗證。
結論是
SSH 是一種用於遠程服務器和客戶端之間通信的安全網絡協議。客戶端和服務器之間的文件傳輸比 FTP 更安全。在本文中,您學習瞭如何生成 SSH 密鑰對並為基於 CentOS 8 的服務器設置基於 SSH 的身份驗證。您還學習瞭如何禁用 SSH 密碼驗證。