目標與操作順序
管理員應使用金鑰登入各自的帳戶,並在需要時使用 sudo,這樣能留下誰做了什麼的紀錄,也能限制密碼猜測。操作順序很重要:先讓新的存取方式正常運作並完成測試,最後才限制 root。保留供應商的主控台存取,以備發生問題。
建立帳戶並安裝金鑰
建立帳戶、加入其公開金鑰,並嚴格設定權限,因為 sshd 會忽略其他人可寫入的金鑰檔案。切勿將私密金鑰複製到伺服器。在 Red Hat 系列系統上,請使用 wheel 群組,而非 sudo 群組。
sudo adduser admin1
sudo usermod -aG sudo admin1
sudo install -d -m 700 -o admin1 -g admin1 /home/admin1/.ssh
sudo install -m 600 -o admin1 -g admin1 ~/admin1.pub /home/admin1/.ssh/authorized_keys從第二個視窗測試
保持目前的工作階段開啟,從另一個終端機測試新的登入方式。僅僅加入群組並不能證明 sudo 可用,決定這一點的是 sudoers 中的規則。使用 sudo -l 確認。
ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 admin1@server.example
sudo -l
sudo -v限制 root 登入
PermitRootLogin prohibit-password 僅允許 root 使用金鑰登入,而 no 會完全阻止 root 透過 SSH 登入。將變更放在獨立檔案中,存放目錄為 /etc/ssh/sshd_config.d. 對大多數選項而言,sshd 使用找到的第一個值,因此較早讀取的檔案可能優先。請用 sshd -T 驗證實際生效的值,而非僅閱讀檔案。關閉舊工作階段前,先測試一次新登入。
echo 'PermitRootLogin no' | sudo tee /etc/ssh/sshd_config.d/50-root.conf
sudo sshd -t
sudo systemctl reload ssh
sudo sshd -T | grep -iE '^(permitrootlogin|passwordauthentication) '密碼登入及應避免的做法
只有在所有需要的帳戶都有經過測試的金鑰後,才停用 PasswordAuthentication。避免多人共用一個帳戶,否則便無法在不影響其他人的情況下撤銷某一人的存取權。為整個帳戶啟用免密碼 sudo,也意味著只憑遭竊的金鑰就能取得完整控制權。
CH-J Server Manager 中的帳戶
Users 模組透過作用中的 SSH 工作階段管理帳戶、群組、SSH 金鑰與 SSH 存取權。它從不變更 sudoers 或設定 NOPASSWD,並根據 sudo -l 回報實際的 sudo 狀態。root 帳戶無法刪除,允許 root 使用密碼登入需要額外確認,建議選項為僅使用金鑰。SSH 存取權的變更會透過 sshd -T 和一次新的 SSH 登入來驗證;如果檢查失敗,或變更會導致您無法存取,就會自動還原先前的設定。沒有 sudo 時,此模組為唯讀。