新买的 Ubuntu 云服务器,上手先做这几项检查

拿到一台新的云服务器,我习惯先不急着装东西,花两分钟做一遍”体检”。下面这些命令都是只读的,不会改动任何配置,可以放心执行。

1. 系统与运行时间

hostnamectl      # 系统版本、内核、虚拟化类型
uptime           # 已运行多久、平均负载

uptime 末尾的 load average 是 1、5、15 分钟的平均负载。经验上不超过 CPU 核数就算正常,比如 2 核机器长期在 2 以下就没问题。

2. 内存和磁盘

free -h
df -h /

free 里要看的是 available 那一列,而不是 free。Linux 会把空闲内存拿去做缓存(buff/cache),需要时再释放,所以 free 小不代表内存不够。

3. 有没有启动失败的服务

systemctl --failed --no-pager

输出 0 loaded units listed. 表示一切正常。如果有服务失败,用 journalctl -u 服务名 -n 50 看最近的日志。

4. 哪些端口在监听

ss -tlnp

重点看 Local Address 这一列:

地址含义
127.0.0.1:端口只有本机能访问
0.0.0.0:端口 / [::]:端口所有网卡都在监听,外网是否能访问还取决于防火墙和安全组

5. 防火墙与安全组

sudo ufw status

云服务器有两层防火墙:

  1. 系统内的防火墙(Ubuntu 上一般是 ufw);
  2. 云平台控制台里的安全组。

外网想访问某个端口,两层都要放行。经常遇到的情况是:服务明明在监听,外面却连不上,最后发现是安全组没开。

6. SSH 配置

grep -E '^(PasswordAuthentication|PermitRootLogin)' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/*

比较稳妥的状态是:

  • PasswordAuthentication no:关闭密码登录,只允许密钥登录,能挡掉绝大部分暴力破解;
  • PermitRootLogin:如果只用密钥登录,yes 的风险不大。更严格的做法是建一个普通用户加 sudo,再把它改成 no。

想看看有没有人在暴力破解:

journalctl -u ssh --since "-1h" --no-pager | grep -c "Failed\|Invalid user"

小结

检查项命令正常表现
负载uptime不超过 CPU 核数
内存free -havailable 充足
磁盘df -h /使用率低于 80%
服务systemctl --failed0 个失败
端口ss -tlnp只有预期的端口在监听
防火墙ufw status + 安全组只放行需要的端口
SSHsshd_config关闭密码登录

把这张表存下来,以后每台新机器都过一遍,心里就有底了。

← 返回首页