系統管理最難的不是單一指令,而是你不知道平常該看什麼、出事該先查哪裡。這篇會把 VPS 管理者最常碰到的日常工作拆成一套比較好上手的順序。
你如果不想每次都只是照著別人的畫面一步一步跟著按,卻不知道自己到底改了什麼,這篇會比較適合你。重點不是讓你背流程,而是讓你下次遇到類似情況時,還知道該怎麼自己判斷。
你會學到什麼
- 理解 VPS 系統管理最常見的工作面向。
- 遇到問題時知道先看服務、資源還是權限。
- 建立比臨時救火更穩定的日常維護習慣。
- 學會 cron 定時任務與安全加固基礎。
什麼情況最適合先看這篇
- 第一次自己管理 Linux 主機,想把操作做穩而不是只會貼指令的人
- 你現在正要處理「VPS Linux 基本系統管理指令」這類操作
- 你希望做完之後不只功能能用,連驗證與排錯也有概念
開始前先確認
- 整理目前主機上的主要服務。
- 確認你有 sudo 權限。
- 正式站先保留操作紀錄。
先提醒你一件事
VPS 最怕的不是不會下指令,而是你不知道指令會影響到哪個服務、哪個設定檔、哪個對外連線。
詳細教學與操作步驟
本文整理 VPS 日常管理最常用的 Linux 指令,涵蓋套件管理、防火牆、系統監控、使用者管理及服務管理。
套件管理
Ubuntu / Debian(apt):
# 更新套件清單
apt update
# 升級所有已安裝套件
apt upgrade -y
# 安裝套件
apt install nginx -y
# 移除套件
apt remove nginx -y
# 完全移除(含設定檔)
apt purge nginx -y
# 搜尋套件
apt search nginx
# 清理不需要的依賴
apt autoremove -y
CentOS / Rocky Linux / AlmaLinux(dnf):
# 更新所有套件
dnf update -y
# 安裝套件
dnf install nginx -y
# 移除套件
dnf remove nginx -y
# 搜尋套件
dnf search nginx
更多 APT 進階操作(依賴衝突、版本鎖定、PPA 管理)請參考 APT 套件管理教學。
防火牆設定(UFW)
UFW(Uncomplicated Firewall)是 Ubuntu 預設的防火牆管理工具,操作簡單直覺。
-
務必先允許 SSH,再啟用防火牆:
ufw allow 22/tcp ufw enable -
允許 HTTP 和 HTTPS:
ufw allow 80/tcp ufw allow 443/tcp -
允許特定 IP 存取特定 port:
# 只允許 1.2.3.4 存取 MySQL ufw allow from 1.2.3.4 to any port 3306 -
查看防火牆狀態與規則:
ufw status verbose ufw status numbered -
刪除規則:
# 用編號刪除(先用 status numbered 查看編號) ufw delete 3 # 用規則內容刪除 ufw delete allow 80/tcp -
拒絕特定 IP:
ufw deny from 5.6.7.8
**提醒:**啟用 UFW 前,請確保已允許 SSH(Port 22),避免連線中斷。如果你改了 SSH port,記得同步調整。
系統監控
# 查看系統運行時間與負載
uptime
# 查看記憶體使用狀況
free -h
# 查看磁碟使用狀況
df -h
# 即時監控程序(推薦安裝 htop)
apt install htop -y
htop
# 查看特定程序
ps aux | grep nginx
# 查看即時系統日誌
journalctl -f
# 查看特定服務日誌
journalctl -u nginx --since "1 hour ago"
建立非 root 使用者
日常操作建議使用非 root 帳號,需要管理權限時再使用 sudo:
-
建立新使用者:
adduser username -
將使用者加入 sudo 群組:
usermod -aG sudo username -
複製 SSH 金鑰到新使用者(讓新帳號也能用金鑰登入):
mkdir -p /home/username/.ssh cp ~/.ssh/authorized_keys /home/username/.ssh/ chown -R username:username /home/username/.ssh chmod 700 /home/username/.ssh chmod 600 /home/username/.ssh/authorized_keys -
測試新帳號:
su - username sudo whoami # 應顯示 root -
確認正常後,建議在
/etc/ssh/sshd_config禁止 root 直接登入:PermitRootLogin no AllowUsers username
服務管理(systemctl)
systemctl 是管理系統服務的標準工具:
# 啟動服務
sudo systemctl start nginx
# 停止服務
sudo systemctl stop nginx
# 重新啟動服務
sudo systemctl restart nginx
# 重新載入設定(不中斷服務)
sudo systemctl reload nginx
# 查看服務狀態
sudo systemctl status nginx
# 設定開機自動啟動
sudo systemctl enable nginx
# 取消開機自動啟動
sudo systemctl disable nginx
# 查看所有運行中的服務
systemctl list-units --type=service --state=running
# 查看服務啟動失敗的原因
systemctl list-units --failed
Cron 定時任務
自動化重複性工作是系統管理的重要環節:
# 編輯 crontab
crontab -e
# 查看目前的排程
crontab -l
Cron 時間格式:分 時 日 月 星期
# 每天凌晨 3 點執行備份
0 3 * * * /opt/backups/backup.sh
# 每小時檢查服務狀態
0 * * * * systemctl is-active nginx || systemctl restart nginx
# 每週日清理日誌
0 4 * * 0 journalctl --vacuum-time=7d
# 每月 1 號更新系統
0 2 1 * * apt update && apt upgrade -y >> /var/log/auto-update.log 2>&1
**重要提醒:**cron 的環境變數和你手動操作時不同,腳本中建議使用完整路徑(如 /usr/bin/rsync 而不是 rsync)。
安全加固基礎
除了 Fail2Ban 之外,還有幾個基礎的安全措施:
設定自動安全更新:
apt install unattended-upgrades -y
dpkg-reconfigure -plow unattended-upgrades
檢查異常登入紀錄:
# 最近的登入紀錄
last -10
# 失敗的登入嘗試
lastb -10
# 目前線上的使用者
who
w
檢查是否有可疑的 SUID 程式:
find / -perm -4000 -type f 2>/dev/null
停用不需要的服務:
# 列出所有啟用的服務
systemctl list-unit-files --state=enabled
# 停用不需要的服務(例如)
sudo systemctl disable cups
日常維護建議時程
| 頻率 | 工作項目 |
|---|---|
| 每天 | 自動備份(cron) |
| 每週 | 檢查磁碟空間、記憶體、日誌 |
| 每月 | 系統更新、清理舊檔案、檢查安全日誌 |
| 每季 | 備份還原演練、SSL 憑證到期檢查 |
做完後怎麼確認自己真的有設對
- 用
ufw status確認防火牆規則正確,SSH port 有開。 - 用新建的使用者帳號測試 SSH 登入和 sudo 權限。
- 用
crontab -l確認排程已設定。 - 手動停掉再重啟一次服務,確認指令沒問題。
這一題最常踩的坑
- 一有錯就直接改設定,沒有先看現況。
- 更新、權限、服務管理都混在一起做,後面難排查。
- 沒有固定維護節奏,問題常常累積到很難收拾。
- 啟用防火牆前忘了允許 SSH,直接把自己鎖在門外。
- cron 的環境變數不同導致腳本失敗,但因為沒看 log 所以不知道。
如果你要往下一步走
想把常用查詢指令補齊,可以接著看 Linux 系統維護常用指令大全。要強化 SSH 安全性,參考 SSH 連線教學。如果你準備開始自己架服務,可以直接對照侃瑞的 VPS 方案與價格 選環境。