Jump to content
View in the app

A better way to browse. Learn more.

PHP论坛人

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

SSH登入提示 Part 1 + (監控 記憶體、硬碟使用率) + (監控 Nginx、PHP、MariaDB) + 監控面板

Featured Replies

SSH登入提示 Part 1 + (監控 記憶體、硬碟使用率) + (監控 Nginx、PHP、MariaDB) + 監控面板



----------
前言
----------

什麼是MOTD?

MOTD (Message of the Day) 是使用者透過SSH登入Linux系統時,系統自動顯示的歡迎訊息。MOTD常用於以下用途:

即時系統資訊:CPU負載、記憶體、磁碟使用率,一眼掌握健康狀態

服務監控:Nginx、PHP-FPM、MariaDB、Redis 運作狀態,停止立即告警

資安警示:Fail2ban 封鎖數、SYN Flood 偵測,異常立即可見

流量分析:即時 QPS、攻擊來源 IP/國家、熱門URL

論壇資訊:線上人數、資料庫查詢效率


2GB VPS 的特殊考量:記憶體資源有限,若記憶體或磁碟異常,越快發現損失越小。動態MOTD讓你在問題影響論壇之前就能提早察覺



--------------------
MOTD的運作機制
--------------------

Linux 系統中的MOTD分為兩種類型:


靜態MOTD
/etc/motd
純文字檔,內容固定不變



動態MOTD
/etc/update-motd.d/
由腳本動態產生,每次登入時即時執行




注意:在Debian 13中,若同時存在靜態與動態MOTD,兩者的內容都會顯示

若只想顯示動態內容,建議將 /etc/motd 的內容清空







---------------------
腳本用途與背景
---------------------

什麼是 update-motd.d?

Linux系統在使用者透過SSH登入時,會自動執行 /etc/update-motd.d/ 目錄下所有可執行的腳本,並將輸出顯示為「每日訊息」 (Message of the Day,MOTD)

這套機制讓管理員在登入的瞬間就能掌握伺服器現況,無需手動執行 top、df、ss 等指令



--------------------
腳本命名規則
--------------------

目錄內的腳本以數字開頭,系統會依序執行:

/etc/update-motd.d/
  00-header          ← 最先執行(通常是歡迎訊息)
  10-system-info     ← 本教學的腳本位置
  90-updates         ← 較晚執行

數字越小優先執行。10-system-info 是常見慣例,代表「基礎系統資訊」



------------------------
為什麼需要自訂腳本?
------------------------

Debian預設的MOTD只顯示最基本的資訊,對於運行論壇的生產伺服器而言遠遠不夠。自訂腳本可以讓你在登入瞬間看到:

CPU負載、記憶體、磁碟使用狀況

Nginx / PHP-FPM / MariaDB / Redis 服務狀態

即時網路連線數與 QPS

Fail2ban封鎖狀況與最新攻擊IP

論壇線上人數



-----------------------
安裝必要套件
-----------------------


基礎工具 (通常已內建)
apt install -y procps iproute2 coreutils



Fail2ban (防暴力破解)
apt install -y fail2ban


sysstat (提供 iostat,用於磁碟 IO 統計)
apt install -y sysstat


MaxMind GeoLite2 官方更新工具
apt install -y geoipupdate mmdb-bin



Redis 客戶端工具
apt install -y redis-tools



啟用 sysstat 資料收集 (磁碟 IO 統計),Debian預設未啟用
sed -i 's/ENABLED="false"/ENABLED="true"/' /etc/default/sysstat




新手常見遺漏:忘記啟用 sysstat 導致 iostat 無法收集歷史資料,MOTD的磁碟IO區塊會顯示空白



------------------
啟用服務
------------------


systemctl enable --now sysstat



systemctl enable --now fail2ban



systemctl enable --now geoipupdate.service



systemctl enable --now geoipupdate.timer








-------------------------
重啟服務
-------------------------

systemctl restart sysstat



systemctl restart fail2ban



systemctl restart geoipupdate



systemctl restart geoipupdate.timer



systemctl restart geoipupdate.service



---------------------------
檢查服務狀態
---------------------------

systemctl status fail2ban


systemctl status geoipupdate.service



systemctl status geoipupdate.timer




檢查 sysstat 服務狀態
systemctl status sysstat


正常會看到類似:
Loaded: loaded (/usr/lib/systemd/system/sysstat.service; enabled; preset: enabled)
Active: active (exited)



測試資料收集 (應輸出CPU使用率)
sar -u 1 3



確認日誌目錄已產生資料檔 (檔名數字為日期)
ls /var/log/sysstat/


預期輸出範例:sa13  sar13











---------------------
靜態MOTD
---------------------

靜態MOTD適合用來顯示固定的警告訊息、伺服器識別資訊或使用規範聲明


修改
vi /etc/motd


修改原有內容,建議將內容清空




儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter







測試結果,先SSH登出
exit



再次SSH登入,應可看到已刪除靜態MOTD的情況







---------------------------------------------
動態MOTD (適用於即時系統資訊)
---------------------------------------------

動態MOTD透過 Shell 腳本在每次登入時即時產生系統狀態資訊,非常適合用來監控VPS,讓管理員一登入就掌握伺服器狀況






------------------------------------------
建立自訂腳本,進入動態MOTD目錄
------------------------------------------

cd /etc/update-motd.d/


ls -la


目錄中的腳本會依 檔名的數字前綴 由小到大依序執行。建議命名規則:


| 前綴     | 用途建議
|--------|----------
| 00–09  | 橫幅標題、安全警告
| 10–49  | 系統資訊 (負載、記憶體、磁碟)
| 50–79  | 服務狀態
| 80–99  | 更新通知、其他提示

建立系統資訊腳本

vi /etc/update-motd.d/10-system-info

貼上以下內容 (請注意:第1行不能為空白)

10-system-info.txt

儲存檔案並離開vi編輯器

按 Esc,輸入 :wq,按 Enter


-----------------
賦予執行權限
-----------------


確保腳本有執行權限
chmod +x /etc/update-motd.d/10-system-info



確認所有權
chown root:root /etc/update-motd.d/10-system-info





--------------------
停用預設的腳本
--------------------

Debian 13 已有預設腳本 10-uname,若不需要可移除執行權限

chmod -x /etc/update-motd.d/10-uname 2>/dev/null || true




------------------
確認PAM設定
------------------

Debian使用PAM控制MOTD顯示,編輯PAM設定檔


編輯
vi /etc/pam.d/sshd


找到這兩行,確保這兩行存在且未被註解 (無 # 符號)


session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate





儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter





-------------------------
開啟 SSH 主配置檔
-------------------------


編輯
vi /etc/ssh/sshd_config


## 將 PrintMotd no 改 yes
PrintMotd yes


# 加入 或 修改
UseDNS no
GSSAPIAuthentication no
PrintLastLog yes




儲存檔案並離開vi編輯器
按 Esc,輸入 :wq,按 Enter







----------------------------
強制重新產生MOTD快取
----------------------------

清除快取
rm -f /var/run/motd.dynamic


重新產生
run-parts /etc/update-motd.d/ > /var/run/motd.dynamic


查看結果
cat /var/run/motd.dynamic





-------------------------
完整的SSH與PAM重啟
-------------------------

重啟SSH服務
systemctl restart sshd


確認SSH設定
sshd -T | grep -E "(printmotd|printlastlog)"


預期輸出應該包含:

printmotd yes

printlastlog yes







------------------
驗證
------------------

驗證設定檔語法
sshd -t



如果語法正確,重啟 SSH 服務
systemctl restart sshd







----------------
立即測試腳本
----------------

直接執行腳本檢查輸出

bash /etc/update-motd.d/10-system-info





-----------------------
驗證SSH登入效果
-----------------------

登出
exit


重新SSH登入,確認動態MOTD正常顯示

------------------------

前往 Part 2

------------------------

SSH登入提示 Part 2 安裝MaxMind GeoLite2並建立自動更新腳本

Edited by Jack

Create an account or sign in to comment

Account

Navigation

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.