1. 安裝 OpenSSH 服務
如果尚未安裝 SSH 服務,運行以下命令:
sudo apt update
sudo apt install openssh-server
2. 啟動 SSH 服務并設置開機自啟
sudo systemctl start ssh
sudo systemctl enable ssh
3. 生成 SSH 密鑰對(本地機器)
在本地終端生成密鑰對(如未生成過):
ssh-keygen -t ed25519 -C "your_email@example.com"
- 默認保存路徑:
~/.ssh/id_ed25519
(私鑰)和~/.ssh/id_ed25519.pub
(公鑰)。 - 可選設置密鑰密碼(增強安全性)。
Ubuntu 22.10 及更高版本默認禁用了 ssh-rsa 簽名算法(基于 SHA-1 哈希算法),原因是該算法存在安全風險,OpenSSH 從 8.7 版本開始不再默認支持,所有這里沒有使用rsa簽名算法
4. 將公鑰上傳到服務器
使用 scp
自動上傳公鑰:
scp .\.ssh\id_ed25519.pub username@server_ip:~/.ssh
復制公鑰內容到服務器的 ~/.ssh/authorized_keys
文件:
sudo cat ~/.ssh/id_ed25519.pub > ~/.ssh/authorized_keys
5. 禁用密碼登錄
編輯 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
修改以下參數:
PasswordAuthentication no
PubkeyAuthentication yes
保存后重啟 SSH 服務:
sudo systemctl restart ssh
6. 驗證配置
- 測試密鑰登錄:
應無需輸入密碼直接登錄(若密鑰有密碼則需輸入密鑰密碼)。ssh username@server_ip
- 檢查密碼登錄是否禁用:
應提示ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no username@server_ip
Permission denied
。
7. 防火墻配置(可選)
若啟用 UFW 防火墻,允許 SSH 端口(默認 22):
sudo ufw allow ssh
注意事項
- 備份密鑰:私鑰(
id_ed25519
)需妥善保管,丟失將無法登錄。 - 緊急恢復:禁用密碼前確保密鑰登錄可用,否則可能被鎖。
- 配置文件路徑:若修改無效,檢查
/etc/ssh/sshd_config.d/
下的附加配置。
通過以上步驟, Ubuntu 系統將僅允許 SSH 密鑰認證,顯著提升安全性。