第250211期 - sshfs

6.4k star,将你的远程目录通过ssh挂载到本地

SSHFS 开源项目介绍

1. 项目简介

SSHFS(SSH Filesystem)是 libfuse 组织维护的开源工具,允许通过 SSH 协议将远程服务器的目录挂载到本地文件系统。其核心特点是将 SSH 的加密通道与 FUSE(用户空间文件系统)结合,实现安全的远程文件访问。


2. 核心功能特点

特性说明
透明加密传输基于 SSH-2 协议,数据全程加密,无需额外配置 VPN
跨平台支持支持 Linux / macOS / Windows(需搭配 WinFsp)
免客户端安装仅需远程主机开启 SSH 服务,无需安装特殊服务端软件
类本地文件操作支持读写、权限管理、符号链接等标准文件操作
带宽优化增量传输与本地缓存机制,减少网络开销
断线自动重连网络波动后可恢复连接,避免数据丢失

3. 适用场景

  • 远程开发:直接编辑服务器上的代码文件(如 PyCharm/VSCode 远程调试)
  • 日志分析:实时查看服务器日志文件(如 tail -f /mnt/remote/access.log
  • 跨设备同步:替代部分场景下的 rsync,实现双向实时同步
  • 受限环境访问:通过跳板机访问内网服务器文件系统

4. 快速开始指南

4.1 安装

Linux (Debian/Ubuntu):

sudo apt install fuse3 sshfs  # 安装依赖
sudo usermod -aG fuse $USER   # 将用户加入fuse组
reboot                        # 重启生效

macOS:

brew install gromgit/fuse/sshfs-mac  # 通过Homebrew安装

Windows:

  1. 安装 WinFspSSHFS-Win
  2. 通过资源管理器映射网络驱动器

4.2 基础使用

# 挂载远程目录到本地
sshfs [user]@[host]:[remote_path] [local_mount_point] \
  -o reconnect,Compression=yes,cache_timeout=60

# 示例:挂载服务器/home/ubuntu到本地的/mnt/server
sshfs ubuntu@192.168.1.100:/home/ubuntu /mnt/server

# 卸载目录
fusermount3 -u /mnt/server  # Linux
umount /mnt/server          # macOS/Windows

常用参数

  • -o IdentityFile=:指定私钥路径
  • -o port=:自定义 SSH 端口
  • -C:启用压缩传输
  • -o cache_timeout=60:属性缓存时间(秒)

5. 性能调优建议

场景优化参数说明
大文件传输-o large_read启用大块读取模式
高延迟网络-o compression=yes启用压缩减少传输量
频繁读写小文件-o kernel_cache启用内核缓存提升性能
避免权限问题-o uid= / -o gid=指定本地用户ID映射

6. 同类工具对比

工具协议加密安装复杂度适用场景
SSHFSSSH安全临时访问
NFSTCP/IP局域网高性能共享
SambaSMB跨平台文件共享
rclone多协议云存储同步

7. 注意事项

  • 权限问题:远程文件的读写权限受 SSH 用户权限限制
  • 文件锁:某些应用(如数据库)的文件锁可能无法通过 SSHFS 正常使用
  • 性能瓶颈:频繁小文件操作可能延迟较高,建议结合 rsync 同步重要数据
  • 符号链接:需添加 -o follow_symlinks 参数才能正确解析远程软链接

SSHFS 是将远程服务器文件系统“本地化”的最轻量级方案,适合需要快速安全访问远程文件的场景。