1. 基本挂载
sshfs user@remotehost:/remote/path /local/mountpoint
- 用途:将远程主机 (
remotehost
) 上的/remote/path
目录挂载到本地的/local/mountpoint
。 - 优点:最简单直接的挂载方式。
- 缺点:使用默认 SSH 端口 (22);挂载进程在前台运行(会占用终端);使用交互式密码认证(不安全且麻烦)。
2. 指定非标准 SSH 端口
sshfs -p 2222 user@remotehost:/remote/path /local/mountpoint
- 用途:当远程 SSH 服务运行在非标准端口 (如
2222
) 时进行挂载。 - 优点:支持自定义端口,适应不同服务器配置。
- 缺点:需明确知道端口号;其他缺点同基本挂载。
3. 后台运行 & 免密码登录 (推荐)
sshfs -o allow_other,default_permissions,IdentityFile=~/.ssh/id_rsa user@remotehost:/remote/path /local/mountpoint
- 用途:使用 SSH 密钥 (
id_rsa
) 认证,挂载到后台运行。 - 优点:安全(密钥认证);无需输入密码;适合脚本自动化。
- 缺点:需预先配置好 SSH 密钥对;
allow_other
选项可能需sudo
或修改/etc/fuse.conf
。
4. 启用调试模式
sshfs -d -f user@remotehost:/remote/path /local/mountpoint
- 用途:调试连接或挂载问题 (
-d
启用 debug,-f
保持前台运行)。 - 优点:输出详细日志,便于排查故障。
- 缺点:占用终端;性能降低;仅用于调试。
5. 限制带宽
sshfs -o workaround=rename,transform_symlinks,compression=no,cache_timeout=3600,ServerAliveInterval=15,reconnect,allow_other,Ciphers=arcfour,idmap=user user@remotehost:/remote/path /local/mountpoint
- 用途:通过禁用压缩 (
compression=no
) 和使用弱加密 (Ciphers=arcfour
) 降低 CPU 开销,提升低带宽下的响应速度。 - 优点:在慢速网络上可能感觉更快。
- 缺点:安全性降低 (弱加密);实际带宽节省有限;现代网络通常不推荐。
6. 处理连接超时/断线
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 user@remotehost:/remote/path /local/mountpoint
- 用途:网络不稳定时自动重连 (
reconnect
),并检测连接超时 (ServerAliveInterval
和ServerAliveCountMax
)。 - 优点:增强网络波动时的稳定性。
- 缺点:重连可能导致短暂卡顿;极端情况下可能挂起进程。
7. 只读挂载
sshfs -o ro user@remotehost:/remote/path /local/mountpoint
- 用途:以只读 (
ro
) 方式挂载远程目录。 - 优点:防止意外修改或删除远程文件;提升安全性。
- 缺点:无法写入文件,功能受限。
8. 解决文件名乱码
sshfs -o uid=$(id -u),gid=$(id -g),umask=0022,workaround=rename,transform_symlinks user@remotehost:/remote/path /local/mountpoint
- 用途:显式指定本地用户 UID/GID (
uid
,gid
) 和文件掩码 (umask
),解决权限和特殊字符显示问题。 - 优点:正确处理文件权限和特殊字符。
- 缺点:命令复杂;需确保远程文件权限允许访问。
9. 挂载用户主目录
sshfs user@remotehost: /local/mountpoint
- 用途:省略远程路径,直接挂载远程用户的主目录 (
~
或/home/user
)。 - 优点:快捷方便,无需输入完整路径。
- 缺点:挂载的是整个主目录,可能包含大量文件。
10. 使用密码登录 (不推荐)
sshfs -o password_stdin user@remotehost:/remote/path /local/mountpoint <<< "your_password"
- 用途:在脚本中通过标准输入传递密码 (极不推荐)。
- 优点:可在无密钥时自动化 (临时方案)。
- 缺点:密码明文暴露在命令历史/脚本中;安全性极差! 强烈建议使用密钥替代。
11. 启用压缩 (低带宽优化)
sshfs -o compression=yes user@remotehost:/remote/path /local/mountpoint
- 用途:启用 SSH 压缩 (
compression=yes
),减少传输数据量。 - 优点:在低带宽高延迟网络下提高传输效率。
- 缺点:增加 CPU 负载;高速网络下可能降低速度。
12. 调整缓存时间
sshfs -o cache_timeout=3600 user@remotehost:/remote/path /local/mountpoint
- 用途:设置属性缓存超时为 1 小时 (
cache_timeout=3600
秒)。 - 优点:减少元数据请求次数,提升重复访问性能。
- 缺点:文件列表/属性更新会有延迟 (最长 1 小时)。
13. 使用特定 SSH 加密算法
sshfs -o Ciphers=aes256-gcm@openssh.com user@remotehost:/remote/path /local/mountpoint
- 用途:强制使用指定的强加密算法 (如
aes256-gcm
)。 - 优点:增强数据传输安全性。
- 缺点:老旧服务器可能不支持新算法。
14. 处理符号链接
sshfs -o transform_symlinks user@remotehost:/remote/path /local/mountpoint
- 用途:转换绝对符号链接为相对于挂载点的相对路径 (
transform_symlinks
)。 - 优点:避免链接指向挂载点外的无效本地路径。
- 缺点:链接行为可能与原始环境不一致。
15. 多用户访问挂载点
sudo sshfs -o allow_other,default_permissions user@remotehost:/remote/path /shared/mountpoint
- 用途:允许挂载点 (
/shared/mountpoint
) 被其他系统用户访问 (allow_other
)。 - 优点:方便共享访问远程目录。
- 缺点:需
sudo
;修改/etc/fuse.conf
启用user_allow_other
;潜在安全风险 (需结合权限控制)。
16. 使用 SSH Config 简化
sshfs remotehost_alias:/remote/path /local/mountpoint
- 用途:利用
~/.ssh/config
中定义的别名 (Host remotehost_alias
) 和参数 (如HostName
,Port
,User
,IdentityFile
)。 - 优点:命令极简;集中管理连接配置;安全便捷。
- 缺点:需预先配置 SSH Config 文件。
17. 传递环境变量
sshfs -o SendEnv=LANG user@remotehost:/remote/path /local/mountpoint
- 用途:将本地环境变量 (如
LANG
) 发送到远程主机。 - 优点:确保远程命令/应用使用正确的语言/区域设置。
- 缺点:需远程 SSH 服务器配置
AcceptEnv
允许接收该变量。
18. 指定文件系统类型 (FAT/NTFS)
sshfs -o direct_io user@remotehost:/remote/ntfs_drive /local/mountpoint
- 用途:当远程文件系统是 FAT/NTFS 时,使用
direct_io
绕过缓存,提高兼容性。 - 优点:解决某些非 Unix 文件系统的写入或缓存问题。
- 缺点:性能显著下降 (无缓存)。
19. 强制重命名策略兼容
sshfs -o workaround=rename user@remotehost:/remote/path /local/mountpoint
- 用途:启用特定重命名兼容策略,解决某些服务器错误。
- 优点:绕过特定服务器软件 (如 ProFTPD) 的兼容性问题。
- 缺点:非标准行为,可能导致其他问题;仅用于解决特定错误。
20. 安全卸载
fusermount -u /local/mountpoint # 或 umount /local/mountpoint (部分系统)
- 用途:卸载 SSHFS 挂载点。
- 优点:安全断开连接,确保数据同步完成。
- 缺点:未卸载直接断开网络可能导致数据损坏/丢失。
SSHFS 核心总结
- ✅ 核心优点:
- 易用性:将远程目录变成本地文件系统,操作直观 (
cp
,mv
,ls
等命令直接可用)。 - 安全性:基于 SSH 协议,数据加密传输。
- 免安装服务端:仅需 SSH 访问权限,无需额外配置 FTP/NFS 服务。
- 跨平台:Linux, macOS (通过 MacFUSE) 等支持 FUSE 的系统均可使用。
- ❌ 核心缺点:
- 性能:网络延迟敏感,大文件/海量小文件传输效率显著低于
rsync
/scp
/NFS。 - 可靠性:网络波动易导致卡顿或断开,需
reconnect
等选项处理。 - 权限映射:远程用户权限需与本地用户协调,否则易出现权限问题 (
idmap
,uid
,gid
选项可缓解)。 - 资源消耗:大量文件操作时 CPU/内存占用较高 (FUSE 开销)。
- 不适合高 I/O 应用:数据库、虚拟机磁盘等场景性能极差。
📌 建议:SSHFS 非常适合浏览文件、编辑少量文档、小文件传输等低 I/O 场景。对于大文件传输、高性能需求或生产环境存储,优先考虑 rsync
/scp
或专用协议 (如 NFS/SMB)。