配置ssh密鑰登錄可提升linux服務器安全性。1. 本地執行ssh-keygen生成私鑰和公鑰;2. 使用ssh-copy-id或手動復制將公鑰添加到服務器的authorized_keys文件;3. 設置.ssh目錄權限為700、authorized_keys文件權限為600,并確保主目錄無其他用戶寫權限;4. 可選禁用密碼登錄,修改sshd_config并重啟ssh服務,確保已有密鑰登錄可用以避免被鎖。整個過程需注意權限設置,否則可能導致密鑰失效。
配置SSH密鑰登錄是提升linux服務器安全性的常用做法。相比密碼登錄,使用密鑰對驗證更安全也更方便,尤其是在自動化腳本或頻繁連接的場景下。關鍵在于正確設置authorized_keys文件。
1. 生成SSH密鑰對(本地操作)
在你常用的電腦上(比如Mac或Linux)執行以下命令生成一對密鑰:
ssh-keygen -t rsa -b 4096
- 會提示你選擇保存路徑,默認是~/.ssh/id_rsa,直接回車即可。
- 接著可以設置一個密碼(passphrase),也可以不設,根據你的安全需求決定。
完成后會在.ssh目錄下生成兩個文件:
- id_rsa:私鑰,一定要妥善保管,不能泄露。
- id_rsa.pub:公鑰,要上傳到服務器。
2. 將公鑰上傳到服務器
最簡單的方法是用ssh-copy-id命令:
ssh-copy-id user@server_ip
- user是你要登錄的用戶名
- server_ip是目標服務器IP地址
這個命令會自動將你的公鑰添加到服務器上的~/.ssh/authorized_keys文件中。
如果沒有這個命令,也可以手動復制粘貼:
cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
3. 設置正確的權限(服務器端操作)
SSH非常“挑剔”權限設置,如果不對,密鑰可能不會生效。
你需要確保以下幾點:
-
.ssh目錄權限為700:
chmod 700 ~/.ssh
-
authorized_keys文件權限為600:
chmod 600 ~/.ssh/authorized_keys
-
用戶主目錄不能對其他用戶有寫權限(常見但容易忽略):
chmod go-w ~
如果你不確定哪里出問題,可以用ssh -v加詳細輸出查看原因:
ssh -v user@server_ip
4. 禁用密碼登錄(可選但推薦)
確認密鑰登錄正常后,建議關閉密碼登錄以提高安全性。
編輯SSH配置文件(一般在/etc/ssh/sshd_config):
sudo nano /etc/ssh/sshd_config
修改以下選項:
PasswordAuthentication no ChallengeResponseAuthentication no UsePAM no
然后重啟SSH服務:
sudo systemctl restart sshd
?? 注意:修改前請確保你至少有一個可用的密鑰登錄方式,否則可能被鎖在外面。
基本上就這些。只要注意權限和路徑,整個過程其實不復雜,但很多新手容易在權限或目錄權限上踩坑。