在CentOS上設置SSH公鑰身份驗證的2個簡單步驟

本教程說明了如何設置 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發行版:DebianUbuntu,RHEL,CentOS,無論如何,只要它運行OpenSSH服務器,就可以使用以下方法。

這很容易做到 ssh-copy-id 命令,隨命令一起提供 openssh-clients 包。

ssh-copy-id [email protected]

輸入遠程用戶的密碼。

centos ssh鍵

公鑰將存儲在 .ssh / authorized_keys 文件位於遠程用戶的主目錄下。 現在,SSH進入遠程服務器。

ssh [email protected]

這次您需要輸入RSA 密碼短語 解鎖私鑰。 您可以在登錄時選擇自動解鎖密鑰,這樣以後就不必輸入密碼了。

生成ssh公鑰中心

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

exit

然後再次SSH到遠程服務器:

ssh [email protected]

這次,儘管您沒有鍵入密碼或密鑰密碼,但是您仍自動登錄到遠程服務器。 另外,使用時,您無需鍵入密碼或密鑰密碼 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登錄,而不允許密碼驗證。 注意 如果你設置 PasswordAuthenticationnoChallengeResponseAuthenticationyes,那麼您仍然可以使用密碼登錄。 要禁用密碼登錄,必須將兩者都設置為 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

在文件底部添加以下行。 用您自己的IP地址替換10.0.0.2。

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種方法

與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。 保重🙂

Sidebar