本教程將向您展示如何設置它 SSH公鑰認證 在 CentOS/RHEL 桌面上。 基本上有兩種方法可以通過 OpenSSH 服務器驗證用戶的登錄。 密碼認證 什麼時候 公鑰認證後者也被稱為 SSH無密碼登錄 因為您不必輸入密碼。

第 1 步:在 CentOS/RHEL 桌面上生成 SSH 公鑰/私鑰對

在您的 CentOS/RHEL 桌面(不是服務器)上,在終端窗口中輸入以下命令。

ssh-keygen -t rsa -b 4096

在哪裡:

  • -t 代表 type上述命令將生成一個 RSA 類型的密鑰對。 RSA 是默認類型。
  • -b 代表 bits默認情況下,密鑰長度為 3072 位。使用 4096 位密鑰來增加安全性。

當要求保存密鑰的文件時,您只需按 Enter 使用默認文件。然後輸入至少 20 個字符的良好密碼。密碼用於加密私鑰。

  • 私鑰(不要與任何人共享)是 .ssh/id_rsa 主目錄中的文件。
  • 公鑰存儲在 .ssh/id_rsa.pub 文檔。

從 randomart 圖像中,您可以看到密鑰長度 (RSA 4096)。運行以下命令:

file ~/.ssh/id_rsa

您應該看到以下輸出:

/home/username/.ssh/id_rsa: OpenSSH private key

如果您收到“沒有此類文件或目錄”錯誤,則表示未創建 SSH 密鑰對。碾過 ssh-keygen -t rsa -b 4096 使用命令重新創建它

第 2 步:將 SSH 公鑰上傳到遠程 Linux 服務器

提示:遠程服務器可以運行任何 Linux 發行版:Debian、Ubuntu、RHEL、CentOS 等。 只要 OpenSSH 服務器正在運行,就可以使用下面的方法。

這很容易做到 ssh-copy-id 訂購,陪伴 openssh-clients 盒。

ssh-copy-id remote-user@server-ip

輸入遠程用戶的密碼。

公鑰存儲在 .ssh/authorized_keys 遠程用戶主目錄中的文件。然後通過 SSH 連接到遠程服務器。

ssh remote-user@server-ip

這次要輸入RSA 鑰匙 密碼 解鎖私鑰。您可以選擇在登錄時自動解鎖密鑰,這樣您以後無需輸入密碼。

生成 ssh 公鑰 centos

輸入正確的密鑰密碼後,您將登錄到遠程 Linux 服務器。退出遠程服務器。

exit

然後通過 SSH 再次連接到遠程服務器。

ssh remote-user@server-ip

這一次,即使您沒有輸入密碼或密鑰密碼,您也會自動登錄到遠程服務器。此外,您在使用時無需輸入密碼或密鑰密碼 scp 傳輸文件的命令。這個 scp 命令 openssh-clients 在 CentOS/RHEL 桌面上默認安裝。

在遠程服務器上強制進行 SSH 公鑰身份驗證

現在默認使用 SSH 密鑰登錄服務器,但您也可以使用密碼在另一台計算機上登錄服務器。我們建議在您的 OpenSSH 服務器上禁用密碼驗證,因為您不希望黑客對您的服務器發起暴力攻擊。

要禁用密碼驗證,請編輯 /etc/ssh/sshd_config 遠程服務器上的文件。

sudo nano /etc/ssh/sshd_config

找到這一行:

#PasswordAuthentication yes

將其更改為:

PasswordAuthentication no

然後找到 ChallengeResponseAuthentication 金屬絲。確保其值設置為 no 如下。當設置為 yes,您可以使用您的密碼登錄。

ChallengeResponseAuthentication no

保存文件並重新啟動 SSH 服務。

sudo systemctl restart sshd

如果沒有對應的私鑰 ~/.ssh 目錄,當我嘗試通過 SSH 連接到遠程服務器時出現以下錯誤:

Permission denied (publickey).

這意味著遠程服務器只允許使用 ssh 密鑰進行 SSH 登錄,而不是密碼驗證。 筆記 如果設置 PasswordAuthentication 到達 no 什麼時候 ChallengeResponseAuthentication 到達 yes,您可以使用您的密碼登錄。兩者都必須設置為禁用密碼登錄。 no.

備份您的公鑰/私鑰對

禁用 SSH 密碼驗證後備份 SSH 密鑰很重要。如果您丟失了密鑰,您將被鎖定在服務器之外。將您的公鑰/私鑰對備份到安全位置,例如 USB 驅動器。

cp ~/.ssh/id_rsa* /path/to/safe/location/

您可以將密鑰對複製到新的 Linux 計算機並使用 SSH 密鑰通過 SSH 連接到您的服務器。將密鑰對複製到新計算機後,將它們移動到: .ssh/ 新用戶的目錄。

mv id_rsa* ~/.ssh/

您需要將密鑰對的所有者更改為新計算機的用戶。

sudo chown new-user:new-user ~/.ssh/id_rsa*

您現在可以使用 SSH 密鑰登錄新計算機上的遠程服務器。

您還可以將密鑰對存儲在一個文件夾中,對該文件夾進行加密和壓縮,然後將其發送到 NextCloud 等雲存儲。

允許來自受信任 IP 地址的密碼驗證

您可能希望允許從您自己的 IP 地址進行密碼驗證,這樣即使您丟失了 SSH 密鑰,您也可以通過 SSH 連接到您的服務器。

提示: 如果您沒有靜態 IP 地址,您可以在您的數據中心設置一個自託管的 VPN 服務器。

打開遠程服務器上的 SSH 守護程序配置文件。

sudo nano /etc/ssh/sshd_config

將以下行添加到文件末尾: 將 10.0.0.2 替換為您的 IP 地址。

Match Address 10.0.0.2
   PasswordAuthentication yes

如果客戶端從 192.168.0.2 連接,則允許密碼驗證。您可以添加多個 IP 地址。

Match Address 10.0.0.2 10.0.0.3
   PasswordAuthentication yes

或者像這樣使用 CIDR 表示法:

Match Address 10.0.0.0/24
   PasswordAuthentication yes

保存並關閉文件。 重新啟動 OpenSSH 服務器。

sudo systemctl restart sshd

更改私鑰密碼

如果需要修改私鑰密碼,可以使用如下命令:

ssh-keygen -f ~/.ssh/id_rsa -p

輸入舊密碼,然後輸入新密碼。

包起來

希望本教程可以幫助您進行設置 SSH公鑰認證 在 CentOS/RHEL 桌面上。另請閱讀:

  • 在 Windows 上使用 SSH 登錄 Linux 服務器的 3 種方法

與往常一樣,如果您發現這篇文章有幫助,請註冊我們的免費新聞通訊以獲取提示和技巧。照顧好自己?