跳转到内容

SSH 与命令行

fnOS 的底座是 Debian,熟悉 Linux 的人可以直接用习惯的工具。但「能做」不等于「应该做」,这一篇先划清边界。

边界在哪里

操作建议
查看状态、排查问题、读日志放心用命令行
运行容器、写脚本、定时任务可以,但数据目录要规划好
apt 安装常用工具(如 htop一般可以,但要接受升级后可能需要重装
apt 升级系统组件、替换内核不要,会破坏系统管理逻辑,见下文
直接改存储、共享、用户的底层配置不要,用网页端

绕过网页端修改系统配置

存储空间、共享文件夹和用户权限在网页端之外还有配套的管理信息。直接在命令行改动它们,可能导致界面显示与实际状态不一致,甚至在系统升级后丢失配置。遇到网页端做不到的需求,先确认是不是真的做不到。

最常见的自损事故

跑一句 apt update && apt full-upgrade,然后管理界面再也打不开——这是 fnOS 上最高发的一类自损事故。原因是 fnOS 的系统组件由官方源配套发布,apt 会把它们换成 Debian 上游版本,导致服务集体启动失败。

已经发生了的话,见执行 apt upgrade 之后无法登录、打不开管理界面——先别重装,多数情况下数据盘是完好的

开启 SSH

  1. 在系统设置中找到终端或 SSH 服务,开启它。
  2. 修改默认端口可以减少自动化扫描的噪音,但这不是安全措施。
  3. 配置密钥登录并禁用密码登录,这才是真正有效的加固。
  4. 不要把 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 服务当前监听在哪个端口,以及它是否可以从公网访问。

延伸阅读

fnOS 非官方中文使用指南,与飞牛官方无隶属关系。