檢查分割與磁碟空間
lsblk
james@stalwart:~$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 124G 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 2G 0 part /boot
└─sda3 8:3 0 122G 0 part
└─ubuntu--vg-ubuntu--lv 252:0 0 61G 0 lvm /
- 看到
/dev/sda3還是 122G,而 LV 只有 61G → 可用空間尚未加入 LVM/dev/sda→ VMware 磁碟檔案大小 124G ✅ /dev/sda3→ 分割大小 122G/dev/mapper/ubuntu--vg-ubuntu--lv→ 邏輯卷 61G
原因分析
- LVM 是兩層概念:
- PV(Physical Volume) → 物理卷:實際磁碟分割(你的是
/dev/sda3) - VG(Volume Group) → 卷組:把 PV 的空間集合起來
- LV(Logical Volume) → 邏輯卷:從 VG 中切一部分給檔案系統(你的
/)
- PV(Physical Volume) → 物理卷:實際磁碟分割(你的是
- 未使用空間:
- 你的 LV
/只是使用了 61G - 剩下的 61G 還在卷組(VG)裡,但沒有分配給任何 LV
- 這是 LVM 的正常現象,方便未來再新增 LV 或擴展現有 LV
- 你的 LV
如何檢查剩餘空間
sudo vgdisplay ubuntu-vg
Free PE / Size→ 顯示卷組中未分配的空間(你應該看到約 61G)
如何擴展 / 到剩餘空間
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
lvextend→ 把卷組剩餘空間全加給/resize2fs→ 擴展檔案系統
執行完後:
df -h
/應該會從 61G → 接近 122G
Linux Server 校準設定時區
在伺服器上正確設定時區(sudo timedatectl set-timezone "Asia/Taipei")
若未將時區調整到正確時會有下列的問題:
確保日誌記錄 (Logs) 時間一致
- 伺服器會產生大量日誌,如系統日誌 (
/var/log/syslog)、應用程式日誌、錯誤日誌等。 - 若時區錯誤,查找特定事件的時間戳記會變得困難,尤其是跨時區進行故障排除時。
影響排程任務 (Cron Jobs)
- Linux 伺服器常使用
cron來安排定時任務,而cron預設使用系統時區。 - 若時區錯誤,排程任務可能在錯誤的時間執行,例如凌晨 2:00 的備份變成其他時區的時間。
影響系統時間同步 (NTP)
- NTP(Network Time Protocol)同步時間時,會使用系統時區來顯示時間。
- 若時區設定錯誤,可能導致時間顯示異常,甚至影響某些需要時間精準性的應用程式。
影響應用程式與資料庫
- 許多應用程式(如 Web 伺服器、PHP、MySQL、PostgreSQL)會依賴系統時區來處理時間相關的數據。
- 若時區錯誤,可能導致:
- 預約、交易紀錄等時間錯誤。
- 應用程式時間計算不準確(如 JWT Token 失效時間)。
影響 SSL/TLS 憑證與驗證機制
- SSL/TLS 憑證和安全通訊協定通常依賴正確的系統時間來進行憑證驗證與加密通訊。
- 時間錯誤可能導致憑證驗證失敗,影響 HTTPS 連線或 SSH 連線。
設定時區(以 Asia/Taipei 為例)指令
sudo timedatectl set-timezone "Asia/Taipei"
修改預設使用者 ubuntu 的密碼
大部份下載回來的 ubuntu vm image 甚至 VPS 選 ubuntu image 時預設可 SSH 的帳號帳碼皆為 ubuntu 若未修改,很容易遭受暴力攻擊
避免被暴力破解攻擊
- 許多惡意攻擊者會掃描公開 IP,並使用字典攻擊(Dictionary Attack)或暴力破解(Brute Force Attack)嘗試登入
ubuntu帳號。 - 預設帳號
ubuntu是常見目標,若未設密碼或使用弱密碼,很容易被入侵。
防止未經授權的存取
- VPS 或 VM 可能被多個人使用或存取,若不修改帳密,其他有相同映像檔的人可能知道你的預設憑證。
- 一些 VPS 供應商可能會保留「後門存取」,導致安全風險。
提高伺服器管理的可追蹤性
- 如果所有人都使用
ubuntu帳號,當有異常行為發生時,無法追蹤是哪個用戶造成的。 - 建立新的管理員帳號,並使用 SSH Key 登入,可以提高驗証強度與安全性。
修改 Ubuntu Linux Server 預設帳號 ubuntu 密碼指令
sudo passwd ubuntu
修改 Linux 最高權限帳號 root 的密碼
修改 Linux 最高權限帳號 root 的密碼是提升系統安全性的重要措施,以下是幾個建議改善的項目:
防止暴力破解攻擊 (Brute Force Attack)
root是所有 Linux 系統的預設最高權限帳號,攻擊者通常會透過 SSH 或其他方式暴力嘗試破解root密碼。- 若
root密碼過於簡單,可能短時間內就被破解,導致系統完全失守,所以必須設定一組強密碼。
防止未經授權的 SSH 直接登入
- 若
root可以直接透過 SSH 登入,攻擊者只需要知道密碼即可獲得最高權限。 - 許多 VPS 提供商的預設
root帳號密碼可能不夠安全,或者其他使用者可能已經知道預設密碼。 - 建議完全禁用
rootSSH 直接登入,只允許其他使用者透過sudo提升權限。
修改 root 密碼的指令
sudo passwd root
更新 Ubuntu Linux Server 作業系統
在 Ubuntu Linux Server 上執行 sudo apt update 和 sudo apt upgrade 來更新系統是維持伺服器安全性、穩定性及效能的關鍵步驟。以下是更新系統的主要原因:
修補安全漏洞,防止被入侵
- Linux 系統和軟體可能存在安全漏洞 (CVE, Common Vulnerabilities and Exposures),攻擊者可以利用這些漏洞入侵系統。
- Ubuntu 官方會釋出安全性更新,透過
apt update && apt upgrade來修補這些漏洞,避免被駭客利用。
確保軟體的穩定性與相容性
- 新版的應用程式和服務通常會修復錯誤 (
bug fixes),避免系統不穩定或當機。 - 舊版套件可能與新安裝的軟體不相容,升級可確保系統元件之間的相容性。
提升效能與新功能
- 官方更新通常會優化程式碼,提高系統或應用程式的執行效能。
- 例如新版的 Kernel、Apache、Nginx、PHP 可能會提供更快的執行速度或更少的資源占用。
維持系統可支援性,避免套件過時
- Ubuntu 的套件庫 (
apt) 會定期移除舊版套件,若長時間不更新,可能導致安裝新軟體時發生依賴性問題 (dependency issues)。 - 例如,Ubuntu 22.04 預設提供 PHP 8.1,但某些應用可能需要 PHP 8.2,若不更新系統就無法獲得新版本。
修正已知 Bug,避免系統異常
- 舊版程式可能有 Bug,導致系統異常或不穩定,更新可以修正這些問題。
- 例如 Apache 或 Nginx 可能有錯誤的設定語法解析,更新後可修正。
更新 Ubuntu Linux Server 指令
sudo apt update && sudo apt upgrade
修改或清除 /etc/motd 內容
這個設定檔可以在 SSH 登入成功與失敗時顯示設定內容
sudo vim /etc/motd
修改 /etc/issue 設定登入提示訊息(login banner)
sudo vim /etc/issue
| 轉義序列 | 說明 |
|---|---|
\d | 顯示目前的日期(格式:Wed Feb 21 2025) |
\t | 顯示目前的時間(格式:14:30:15) |
\s | 顯示作業系統名稱(通常是 Linux) |
\n | 顯示主機名稱(uname -n 的輸出) |
\l | 顯示 TTY 裝置名稱(例如 tty1) |
\m | 顯示硬體架構(例如 x86_64) |
\r | 顯示作業系統核心版本(例如 5.15.0-91-generic) |
\v | 顯示完整的作業系統版本(例如 Ubuntu 22.04.3 LTS) |
\o | 顯示主機的網域名稱(FQDN) |
Ubuntu 22.04 LTS \s \n \l
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
DEMO.VM
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Host Name: \n
Time: \d \t
System IP address: \4

建立全新的使用者
新建使用者可以自取名稱,本例為 demo
sudo adduser demo
讓 demo 可以執行 sudo
sudo adduser demo sudo
轉換使用者為 demo
su demo
產生 ssh key
ssh-keygen
產生 authorized_keys 並將公鑰 id_rsa.pub 貼入 authorized_keys
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
將 Linux 上產生的私鑰 id_rsa 下載到 Windows
# 將 Linux 上的 username 私鑰 id_rsa 下載到 Windows C:\Users\YourUserName\.ssh>
pscp demo@IP:/home/demo/.ssh/id_rsa C:\Users\YourUserName\.ssh
SSH 遠端連線
安裝 OpenSSH Server
sudo apt update
sudo apt install -y openssh-server
啟用並啟動 SSH
sudo systemctl enable ssh
sudo systemctl start ssh
如果你使用的是 LXD/Incus container,有時候 systemd 可能不完全啟動,這時候可以用:
sudo service ssh start
或者直接檢查狀態:
sudo systemctl status ssh
修改 SSH 連線使用 SSH Key 並禁用密碼登入
sudo vim /etc/ssh/sshd_config
以下設定:
- 不允許 root 登入
- 使用者使用 ssh key 登入
- 認証公鑰的檔案路徑
- 所有使用者不允許使用者用密碼登入
PermitRootLogin no PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 PasswordAuthentication no
設定完成後重新啟動 SSH 就開始生效
sudo service ssh restart
開機自動啟動 SSH
sudo systemctl enable sshd.service
在 PowerShell 連線若遇到下列情況時:
PS C:\Users\jangmingking> ssh devvm-james
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ED25519 key sent by the remote host is
SHA256:qfKGngPUGuyjsafF97WvBFR4t1ESaefNMB0NHqLZZP0.
Please contact your system administrator.
Add correct host key in C:\\Users\\jangmingking/.ssh/known_hosts to get rid of this message.
Offending ED25519 key in C:\\Users\\jangmingking/.ssh/known_hosts:120
Host key for 10.10.10.80 has changed and you have requested strict checking.
Host key verification failed.
在 PowerShell 執行:
ssh-keygen -R 10.10.10.80
更改成自已的 hostname
sudo vim /etc/hostname
sudo hostnamectl set-name demo-vm
sudo hostname demo-vm
將預設的使用者 ubuntu 取消 sudo 的權限
sudo deluser ubuntu sudo



