SSHFS 挂载远程目录:只开 SSH 就能用的加密网络盘
CIFS、NFS、SSHFS 三种方式横向对比,sshfs 安装、密钥免密、自动挂载配置,以及 SFTP 子系统未启用导致连接被重置的排查。
适用环境: Ubuntu/Debian 系列 Linux | 远程服务器:任意支持 SSH/SFTP 的系统
测试环境: 客户端 Ubuntu 24.04 (192.168.1.20) | NAS 192.168.1.10 (端口 22)
SSHFS 优势: 无需服务端额外配置,只需 SSH+SFTP 即可,加密传输,最简单的网络挂载方案
测试环境: 客户端 Ubuntu 24.04 (192.168.1.20) | NAS 192.168.1.10 (端口 22)
SSHFS 优势: 无需服务端额外配置,只需 SSH+SFTP 即可,加密传输,最简单的网络挂载方案
三种挂载方式对比
| 特性 | CIFS/SMB | NFS | SSHFS |
|---|---|---|---|
| 服务端配置 | 需开启 SMB 服务 | 需开启 NFS 服务并配置导出 | 只需 SSH+SFTP 开着 |
| 认证方式 | 用户名+密码 | IP 认证 | SSH 密钥或密码 |
| 加密传输 | 可选 (SMB3) | 默认不加密 | 默认 SSH 加密 |
| 性能 | 中等 | 最高 | 中等 |
| 跨平台 | Windows 原生 | Linux/Unix | 全平台 |
| 防火墙友好 | 需开 445 | 需开 2049 | 复用 SSH 端口 |
完整操作步骤
安装 sshfs
# 安装 SSHFS 客户端工具
sudo apt update -y
sudo apt install -y sshfs
# 验证安装
which sshfs
# 输出: /usr/bin/sshfssshfs 依赖: FUSE (Filesystem in Userspace) 内核模块,Ubuntu 默认已加载
测试 SSH 和 SFTP 连接
# 测试 SSH 能否连接(密码: <你的密码>)
sshpass -p '<你的密码>' ssh -o StrictHostKeyChecking=no -p 22 nasadmin@192.168.1.10 echo ok
# 测试 SFTP 能否连接
echo ls | sshpass -p '<你的密码>' sftp -o StrictHostKeyChecking=no -p 22 nasadmin@192.168.1.10
# 查看远程目录内容
sshpass -p '<你的密码>' sftp -p 22 nasadmin@192.168.1.10 <<< 'ls'重要: SSHFS 需要 SFTP 子系统 正常工作。如果 SFTP 连接失败(如 "Connection reset"),需要在 NAS 管理界面启用 SFTP 服务。
群晖 NAS 启用方法:控制面板 → 终端机和 SNMP → 终端机 → 勾选 启用 SFTP 服务
群晖 NAS 启用方法:控制面板 → 终端机和 SNMP → 终端机 → 勾选 启用 SFTP 服务
注意端口: 本例中 端口 22(非默认 22)。如果 NAS 同时开了 SSH 和 SFTP,端口可能不同,请确认实际端口号。
生成 SSH 密钥(推荐)
# 生成 SSH 密钥对(如果已有可跳过)
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ''
# 将公钥复制到 NAS
ssh-copy-id -o StrictHostKeyChecking=no -p 22 -i ~/.ssh/id_ed25519.pub nasadmin@192.168.1.10
# 如果 ssh-copy-id 不支持指定端口,手动复制:
cat ~/.ssh/id_ed25519.pub
# 将输出的内容粘贴到 NAS 上的 ~/.ssh/authorized_keys 文件中
# 测试免密登录
ssh -o StrictHostKeyChecking=no -p 22 nasadmin@192.168.1.10 echo ok
# 输出: ok (无需输入密码)为什么用密钥? SSHFS 挂载后,如果用密码认证,系统会频繁提示输入密码。密钥认证可以实现完全免交互。
创建挂载点
# 创建本地挂载目录
sudo mkdir -p /mnt/sshfs_xuantao手动挂载测试
# 使用密钥认证挂载
sshfs nasadmin@192.168.1.10:/nasadmin /mnt/sshfs_xuantao \
-o StrictHostKeyChecking=no,IdentityFile=~/.ssh/id_ed25519,port=152
# 或使用密码认证(需要安装 sshpass)
sshfs nasadmin@192.168.1.10:/nasadmin /mnt/sshfs_xuantao \
-o StrictHostKeyChecking=no,port=152
# 验证挂载成功
df -h /mnt/sshfs_xuantao
# 输出: nasadmin@192.168.1.10:/nasadmin 3.5T 1.2T 2.4T 32% /mnt/sshfs_xuantao
# 查看远程文件
ls /mnt/sshfs_xuantao/卸载测试挂载
# 卸载
fusermount -u /mnt/sshfs_xuantao
# 如果 fusermount 失败,强制卸载
sudo umount -l /mnt/sshfs_xuantao写入 /etc/fstab 永久挂载
# SSHFS 挂载需要使用 sshfs# 前缀格式
# 注意:SSHFS 使用 user,noauto,表示用户登录时挂载
echo 'sshfs#nasadmin@192.168.1.10:/nasadmin /mnt/sshfs_xuantao fuse StrictHostKeyChecking=no,IdentityFile=/home/xuan/.ssh/id_ed25519,port=152,_netdev,user,noauto 0 0' \
| sudo tee -a /etc/fstab
# 验证 fstab 内容
cat /etc/fstab | grep sshfs注意: SSHFS 在 fstab 中必须使用
user,noauto 选项,不能像 NFS/CIFS 那样在系统启动时自动挂载。SSHFS 挂载会在用户登录时自动触发。 测试永久挂载
# 先卸载之前的测试挂载
fusermount -u /mnt/sshfs_xuantao 2>/dev/null
# 以普通用户身份挂载(模拟登录时自动挂载)
sshfs nasadmin@192.168.1.10:/nasadmin /mnt/sshfs_xuantao \
-o StrictHostKeyChecking=no,IdentityFile=/home/xuan/.ssh/id_ed25519,port=152
# 确认挂载成功
df -h /mnt/sshfs_xuantao
ls /mnt/sshfs_xuantao/完成! SSHFS 挂载已配置好,使用密钥认证免密码。
SSHFS 挂载参数详解
| 参数 | 说明 |
|---|---|
StrictHostKeyChecking=no | 自动接受远程主机密钥(首次连接) |
IdentityFile=~/.ssh/id_ed25519 | 指定 SSH 密钥文件 |
port=152 | SSH 端口号(默认 22) |
reconnect | 断线自动重连 |
follow_symlinks | 跟随符号链接 |
allow_other | 允许其他用户访问挂载点 |
_netdev | 等待网络就绪 |
user,noauto | 用户登录时挂载(fstab 必需) |
ServerAliveInterval=15 | 发送心跳保活(秒) |
推荐挂载参数组合:
-o StrictHostKeyChecking=no,reconnect,follow_symlinks,ServerAliveInterval=15常用运维命令
# 查看已挂载的 SSHFS
mount | grep sshfs
# 卸载 SSHFS
fusermount -u /mnt/sshfs_xuantao
# 强制卸载
sudo umount -l /mnt/sshfs_xuantao
# 查看 SSHFS 连接状态
sshfs -V
# 调试模式挂载(查看详细日志)
sshfs -f -o debug nasadmin@192.168.1.10:/nasadmin /mnt/sshfs_xuantao -o port=152常见错误排查
| 错误信息 | 原因 | 解决方法 |
|---|---|---|
Connection reset by peer | SFTP 子系统未启用或被限流 | 在 NAS 启用 SFTP;检查端口号 |
Permission denied | SSH 密钥未配置或密码错误 | 用 ssh-copy-id 配置密钥 |
No such file or directory | 远程路径错误 | 用 sftp 先确认正确路径 |
fuse: unknown option | 不支持的挂载参数 | 检查 sshfs 版本,去掉不支持的参数 |
| 重启后挂载丢失 | fstab 中缺少 user,noauto | 确保 fstab 使用 sshfs# 格式 |
| 断线后无法访问 | 网络不稳定 | 添加 reconnect 参数 |
SSHFS vs NFS vs CIFS 选择建议
| 场景 | 推荐方式 | 原因 |
|---|---|---|
| 偶尔远程访问文件 | SSHFS | 无需服务端配置,即装即用 |
| 纯 Linux 高性能 | NFS | 协议开销最小,性能最好 |
| Windows + Linux 混合 | CIFS | Windows 原生支持 |
| 跨防火墙/公网 | SSHFS | 复用 SSH 端口,加密传输 |
| 高并发小文件 | NFS | 内核级支持,延迟最低 |
| 无需服务端管理 | SSHFS | 只需 SSH 账号即可 |
教程生成时间: 2026-09-11 | 环境: Ubuntu 24.04 + Synology NAS (端口 22)
本文整理自郑州鼎益技术资料《SSHFS_mount_tutorial》,公开发布前已做脱敏与校订 · 最后校订 2026-11-11