CH-J Server Manager透過 SSH 管理伺服器
選單
所有指南與文章 →

SSH 使用者與 root 存取:Linux 安全設定

建立管理員帳戶、安裝其金鑰並測試 sudo,然後才限制 root 登入,避免讓自己無法存取伺服器。

目標與操作順序

管理員應使用金鑰登入各自的帳戶,並在需要時使用 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 時,此模組為唯讀。

詳細文件

OpenSSH: sshd_config →

man: sudoers →

生物辨識解除鎖定與安全性 →