跳转到帖子
在手机APP中查看

一个更好的浏览方法。了解更多

PHP论坛人

主屏幕上的全屏APP,带有推送通知、徽章等。

在iOS和iPadOS上安装此APP
  1. 在Safari中轻敲分享图标
  2. 滚动菜单并轻敲添加到主屏幕
  3. 轻敲右上角的添加按钮。
在安卓上安装此APP
  1. 轻敲浏览器右上角的三个点菜单 (⋮) 。
  2. 轻敲添加到主屏幕安装APP
  3. 轻敲安装进行确认。

SSH MOTD 監控面板 Part 1

精选回复

SSH MOTD 監控面板 Part 1



-------------
適用環境
-------------

作業系統:Debian 13

硬體規格:2 vCPU / 2GB RAM

應用情境:運行 LNMP 的論壇網站

防火牆:匹配 nftables 防火牆



----------------------------------
前言:為什麼需要動態 MOTD?
----------------------------------

MOTD (Message of the Day) 是使用者透過 SSH 登入系統時顯示的訊息。對於維運人員,一個即時、動態的 MOTD 面板能讓你:


快速掌握健康狀態:CPU 負載、記憶體、磁碟、Inode 使用率一目了然

主動監控服務:即時顯示 Nginx、PHP-FPM、MariaDB、Redis、Fail2ban 的運作狀態,異常即告警

及早發現資安威脅:觀察 Fail2ban 封鎖數、SYN Flood 跡象、防火牆阻擋封包數

分析即時流量:查看即時 QPS、熱門 URL、來自哪些國家/IP 的請求

掌握論壇營運:顯示線上人數、資料庫慢查詢總數、快取命中率




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 是常見慣例,代表「基礎系統資訊」







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


更新系統
apt update && apt full-upgrade -y



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


確認以下工具可用
which hostname free df ss nproc uname uptime vmstat



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 700 /etc/update-motd.d/10-system-info



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





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

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

chmod -700 /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 改 yes
PrintMotd yes



# UseDNS no 去掉 # 註解
UseDNS no



#GSSAPIAuthentication no 去掉 # 註解
GSSAPIAuthentication no



#PrintLastLog yes 去掉 # 註解
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 MOTD 監控面板 Part 2 MaxMind GeoLite2

本帖最后于,由Jack编辑

创建帐户或登录后发表意见

帐户

导航

搜索

配置浏览器推送通知

Chrome (安卓)
  1. 轻敲地址栏旁的锁形图标。
  2. 轻敲权限 → 通知。
  3. 调整你的偏好。
Chrome (台式电脑)
  1. 点击地址栏中的挂锁图标。
  2. 选择网站设置。
  3. 找到通知选项并调整你的偏好。