OpenWRT 配置 SFTP 远程文件传输与安全访问
前言
在嵌入式网络设备如 OpenWRT 路由器上,安全地管理配置文件、日志或备份数据至关重要。SFTP(SSH File Transfer Protocol)基于 SSH 协议,提供了加密、认证和数据完整性保护,相比传统的 FTP 更加安全。然而,由于家庭网络通常处于 NAT 之后且没有公网 IP,直接访问内网设备较为困难。本文将介绍如何在 OpenWRT 上安装并配置 SFTP 服务,并结合内网穿透技术实现安全的远程文件传输。
1. 环境准备与 SSH 访问
在开始之前,请确保您已经能够通过 SSH 登录到 OpenWRT 设备。大多数 OpenWRT 固件默认开启了 SSH 服务,端口为 22。如果您尚未开启,可以在 LuCI 界面中进入'系统'->'启动项',启用 dropbear 服务。
使用终端工具(如 PuTTY、Terminal 或 Xshell)连接设备:
ssh root@<路由器局域网 IP>
输入密码后获得 root 权限,后续操作均在此环境下进行。
2. 安装 SFTP 服务组件
OpenWRT 使用 opkg 包管理器。虽然部分教程会同时安装 vsftpd,但针对 SFTP 协议,我们主要依赖 OpenSSH 提供的 sftp-server 组件。vsftpd 是用于传统 FTP 协议的,若仅需 SFTP 可省略以避免冗余。
2.1 更新软件源
首先更新本地包索引,确保获取最新版本的软件包信息:
opkg update
2.2 安装 OpenSSH SFTP Server
执行以下命令安装核心组件:
opkg install openssh-sftp-server
安装完成后,建议检查服务是否已正确部署:
which sftp-server
如果返回路径(如 /usr/libexec/sftp-server),则说明安装成功。
2.3 配置开机自启
OpenWRT 的 init.d 脚本通常会自动处理 SSH 相关服务的启动,但为了确保稳定性,可以手动确认:
/etc/init.d/dropbear enable
3. 用户权限与目录设置
为了安全起见,建议为 SFTP 传输创建专用的受限用户,而不是直接使用 root 账户。这可以防止误操作导致系统损坏。
3.1 创建专用用户
adduser sftpuser
passwd sftpuser
3.2 限制用户目录
修改 /etc/shells 文件,确保该用户只能访问指定目录。编辑 /etc/shells:
vi /etc/shells
添加或确认包含 /bin/sh 和 /bin/bash。
在 /etc/passwd 中,将用户的 shell 设置为 /sbin/nologin 或 /bin/false,但在 SFTP 场景下,通常需要保留 shell 以允许 SFTP 子系统运行,或者通过 ForceCommand internal-sftp 在 SSH 配置中限制。对于 OpenWRT 简化版,通常保持默认 shell 即可,但需配合 chroot 配置。


