SSH 或 Secure Shell 是一種用於在兩台計算機之間通信和共享數據的協議。提供啟用密碼或無密碼(禁用)的身份驗證並加密兩台主機之間的通信。 使用 CentOS 服務器時,大部分時間都花在通過 SSH 連接到服務器的終端上。

本指南重點介紹為 CentOS 8 服務器設置基於 SSH 密鑰的身份驗證。 SSH 密鑰提供了一種與遠程服務器通信的簡單而穩定的方式,建議所有用戶使用。

在 Linux 上創建 SSH 密鑰

要生成新的 2048 位 RSA 密鑰對,請打開終端並運行以下命令:

ssh-keygen 

按 Enter 鍵,您將看到以下輸出:

當您按 Enter 時,默認情況下,密鑰對保存在 your_home 文件夾的 .ssh 子目錄中。您可以指定備用路徑來存儲密鑰對,但建議您使用默認目錄來存儲密鑰對。

如果您之前在客戶端計算機上創建了密鑰對,系統將提示您覆蓋它。是或否的選擇完全取決於您,但請注意“y”選項。 如果選擇“y”選項,您將無法使用之前的密鑰對登錄服務器。

創建 SSH 密鑰 3

系統將提示您輸入密碼以添加一層安全保護,以防止未經授權的用戶訪問服務器。如果您不想輸入密碼,請按 Enter。

創建 SSH 密鑰 4

輸入密碼後,您將看到以下輸出:

SSH 密鑰創建成功

現在 SSH 密鑰對已成功生成,運行以下命令進行驗證。

ls -l ~/.ssh/id_*.pub 

列出可用的 SSH 密鑰

上面的命令將輸出包含 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] 

ssh_copy_id 命令示例

IP 地址是系統 IP。 如果鍵入 yes 並按 Enter,系統將提示您輸入遠程用戶的密碼。

輸入 ssh_copy_id 的密碼

當用戶完成所有步驟時,公鑰被複製到服務器。

成功將公鑰複製到遠程主機

添加不帶 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 密鑰登錄服務器

現在您已經成功地將密鑰添加到服務器,您應該能夠在沒有用戶密碼的情況下登錄服務器。

$ssh [email protected]_IP地址

在我的服務器上,我使用以下命令:

ssh [email protected] 

使用密鑰通過 SSH 進行遠程連接

如果不設置密碼,則無需驗證即可登錄。這是登錄服務器的最快方式。如果沒有,您必須通過身份驗證階段。

第 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 密碼驗證。