一、什麼是密鑰登錄
在Linux系統中,我們通常採用的方式是使用用戶名和密碼進行登錄。但是隨着計算機技術的發展,一些黑客利用各種手段獲取用戶的賬號密碼,進而對服務器進行入侵,造成服務器數據泄露等問題。因此,為了更加安全地進行服務器登錄,我們可以採用密鑰登錄的方式,即使用一對公私密鑰進行驗證,來確保登錄的安全性。
二、生成密鑰對
在進行密鑰登錄前,我們需要先生成密鑰對。使用ssh-keygen命令可以生成一對公共和私人密鑰。
$ ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa -q -N ""
其中,-t參數指定生成密鑰的類型,這裡我們選擇rsa;-b指定密鑰長度,一般建議選擇2048位;-f參數指定生成的密鑰文件存放路徑,這裡我們可以將其存放在用戶目錄下的.ssh文件夾中;-q參數表示以安靜模式生成密鑰,不需要輸入任何提示符;-N參數指定密鑰的密碼,這裡為空,也就是不設置密碼。
執行命令後,會在用戶目錄下的.ssh文件夾中生成id_rsa和id_rsa.pub兩個文件,其中id_rsa是私鑰文件,該文件只有當前用戶具有讀寫權限;而id_rsa.pub是公鑰文件,該文件可以被複制到其他機器的.ssh/authorized_keys文件中,以實現密鑰登錄。
三、將公鑰添加到遠程主機中
在本地機器生成公鑰之後,接下來需要將該公鑰添加到目標主機的authorized_keys文件中,以實現密鑰登錄。如果目標主機上原來沒有.ssh目錄,需要先創建:
$ ssh user@remote-server "mkdir -p ~/.ssh"
創建完成後,將本地生成的公鑰追加到authorized_keys文件中:
$ cat ~/.ssh/id_rsa.pub | ssh user@remote-server 'cat >> ~/.ssh/authorized_keys'
這裡使用了一個管道符和ssh命令來將公鑰內容發送到遠程主機,並將其追加到authorized_keys文件中。在執行以上命令時,需要輸入目標機器的登錄密碼。
四、使用密鑰進行登錄
完成以上步驟後,我們就可以使用密鑰登錄到目標主機了。在登錄時,需要指定私鑰的路徑:
$ ssh -i ~/.ssh/id_rsa user@remote-server
其中,-i參數指定私鑰的路徑。執行命令後,程序會自動讀取私鑰,並與遠程主機進行驗證,如果驗證通過,則可以順利登錄主機。此時,不需要再輸入密碼了,登錄過程更加方便快捷。
五、密鑰登錄的優缺點
相比傳統的密碼登錄方式,密鑰登錄具有以下優點:
- 安全性高。密鑰對中的私鑰文件存儲在本地機器中,只有持有正確密鑰的用戶才能登錄到遠程機器,更加防止黑客入侵。
- 方便快捷。使用密鑰登錄,無需輸入密碼,登錄過程更加簡便快捷。
當然,密鑰登錄也有一定的缺點,比如在多設備使用時,需要將私鑰文件保存在每個設備中,管理起來較為麻煩。此外,在一些服務器上可能會禁止使用密鑰登錄,需要特別注意。
六、小結
通過本文的介紹,我們了解了什麼是密鑰登錄,以及如何生成密鑰對、將公鑰追加到目標主機中,並使用密鑰登錄到遠程主機。在實際工作中,我們可以靈活運用密鑰登錄和密碼登錄兩種方式,提升SSH登錄的安全性和便捷性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/233533.html