本教程將向您展示如何設置它 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 鑰匙 密碼 解鎖私鑰。您可以選擇在登錄時自動解鎖密鑰,這樣您以後無需輸入密碼。
輸入正確的密鑰密碼後,您將登錄到遠程 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 種方法
與往常一樣,如果您發現這篇文章有幫助,請註冊我們的免費新聞通訊以獲取提示和技巧。照顧好自己?