在 Debian 上通过 SSHFS 实现 SFTP 自动挂载
一 准备与安装
- 安装必要组件:SSHFS 与 FUSE(SSHFS 基于 FUSE 用户态文件系统,Debian 上通常已内置 FUSE 内核模块)。
- 建议先配置 SSH 免密登录,避免开机挂载时人工输入密码。
- 安装命令:
- sudo apt-get update
- sudo apt-get install -y sshfs
- 验证 FUSE:
- lsmod | grep fuse(有输出说明内核模块已加载)
- 若无输出,可尝试 sudo modprobe fuse 加载模块
二 手动挂载一次以验证连通性
- 创建本地挂载点:
- sudo mkdir -p /mnt/remote
- 基本挂载(示例用户为 alice,远程目录 /data,本地 /mnt/remote):
- sshfs alice@192.0.2.10:/data /mnt/remote
- 常用选项:
- 指定端口:sshfs -p 2222 alice@192.0.2.10:/data /mnt/remote
- 允许其他用户访问挂载点:sshfs -o allow_other alice@192.0.2.10:/data /mnt/remote
- 使用密钥:sshfs -o IdentityFile=~/.ssh/id_rsa alice@192.0.2.10:/data /mnt/remote
- 验证:
- df -hT | grep sshfs(应看到挂载点)
- ls /mnt/remote(应列出远程文件)
三 设置开机自动挂载的两种方式
四 常见问题与排错要点
- 报错 “fusermount: fuse device not found”:说明 FUSE 未加载,执行 sudo modprobe fuse 后重试。
- 开机挂载失败但手动可挂载:多为网络未就绪,/etc/fstab 条目中加入 _netdev;或改用 systemd 并配置 After=network-online.target。
- 服务器重启或证书变更导致 “read: Connection reset by peer”:
- 清理旧主机密钥:ssh-keygen -f “~/.ssh/known_hosts” -R 192.0.2.10
- 重新挂载;必要时在 sshfs 选项中加入 reconnect 提升网络抖动下的恢复能力。
- 权限与多用户访问:
- 使用 allow_other 让非挂载用户访问;确保挂载点目录权限与本地 umask 设置符合预期。
- 卸载方式:
- fusermount -u /mnt/remote(若卡住可用 fusermount -uz /mnt/remote 强制)