在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發行版:Debian,Ubuntu,RHEL,CentOS,無論如何,只要它運行OpenSSH服務器,就可以使用以下方法。
這很容易做到 ssh-copy-id
命令,隨命令一起提供 openssh-clients
包。
ssh-copy-id [email protected]
輸入遠程用戶的密碼。
公鑰將存儲在 .ssh / authorized_keys 文件位於遠程用戶的主目錄下。 現在,SSH進入遠程服務器。
ssh [email protected]
這次您需要輸入RSA 鍵 密碼短語 解鎖私鑰。 您可以在登錄時選擇自動解鎖密鑰,這樣以後就不必輸入密碼了。
輸入正確的密鑰密碼後,您將登錄到遠程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登錄,而不允許密碼驗證。 注意 如果你設置 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
在文件底部添加以下行。 用您自己的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種方法
與往常一樣,如果您發現這篇文章很有用,請訂閱我們的免費新聞通訊以獲取更多提示和技巧。 保重🙂