外观
SSH 与命令行
fnOS 的底座是 Debian,熟悉 Linux 的人可以直接用习惯的工具。但「能做」不等于「应该做」,这一篇先划清边界。
边界在哪里
| 操作 | 建议 |
|---|---|
| 查看状态、排查问题、读日志 | 放心用命令行 |
| 运行容器、写脚本、定时任务 | 可以,但数据目录要规划好 |
用 apt 安装常用工具(如 htop) | 一般可以,但要接受升级后可能需要重装 |
用 apt 升级系统组件、替换内核 | 不要,会破坏系统管理逻辑,见下文 |
| 直接改存储、共享、用户的底层配置 | 不要,用网页端 |
绕过网页端修改系统配置
存储空间、共享文件夹和用户权限在网页端之外还有配套的管理信息。直接在命令行改动它们,可能导致界面显示与实际状态不一致,甚至在系统升级后丢失配置。遇到网页端做不到的需求,先确认是不是真的做不到。
最常见的自损事故
跑一句 apt update && apt full-upgrade,然后管理界面再也打不开——这是 fnOS 上最高发的一类自损事故。原因是 fnOS 的系统组件由官方源配套发布,apt 会把它们换成 Debian 上游版本,导致服务集体启动失败。
已经发生了的话,见执行 apt upgrade 之后无法登录、打不开管理界面——先别重装,多数情况下数据盘是完好的。
开启 SSH
- 在系统设置中找到终端或 SSH 服务,开启它。
- 修改默认端口可以减少自动化扫描的噪音,但这不是安全措施。
- 配置密钥登录并禁用密码登录,这才是真正有效的加固。
- 不要把 SSH 端口映射到公网。需要远程使用时,走私有网络组网。
配置密钥的大致流程:在你的电脑上生成密钥对,把公钥追加到 NAS 上该用户的 ~/.ssh/authorized_keys,测试能免密登录之后,再在服务配置里关闭密码登录。关闭之前一定要先测试通过,否则会把自己锁在外面。
排查常用的命令
sh
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT # 列出所有块设备及挂载点
df -h # 各挂载点的容量使用情况
free -h # 内存与交换分区使用情况
uptime # 运行时长与负载
ss -tlnp # 列出正在监听的端口及对应进程
journalctl -p err -b # 本次开机以来的错误级别日志
smartctl -a /dev/sda # 查看某块盘的完整 SMART 信息
docker ps -a # 所有容器及其状态参数说明:-h 让容量以人类可读单位显示;ss 的 -t 是 TCP、-l 是监听状态、-n 不做域名解析、-p 显示进程;journalctl 的 -p err 按优先级过滤、-b 限定本次启动。
排查磁盘问题时,journalctl -p err -b | grep -i 'ata\|scsi\|i/o' 能快速找出磁盘相关的错误。
定时任务
系统自带的计划任务功能足够应付多数需求,而且有界面和日志,优先用它。确实需要 cron 时:
sh
crontab -e写任务时坚持三条:用绝对路径、把输出重定向到日志文件、失败时发通知。没有日志的定时任务,出问题时你无从下手。
检查结果
用密钥登录成功、密码登录已禁用、上面的命令都能正常执行。然后确认一件事:你能说出 SSH 服务当前监听在哪个端口,以及它是否可以从公网访问。