使用 SSHFS 挂载远程文件系统

Table of Contents

Linux 内核提供了 FUSE(用户空间文件系统)特性,可让用户在不动内核代码的情况下创建自己的文件系统。SSHFS 基于 FUSE,利用 SSH 协议把远程机器的文件系统挂载到本地。

一般发行版都可用包管理器安装,如 Fedora:

sudo dnf install sshfs

或从官方源码仓库下载:https://github.com/libfuse/sshfs

例,将远程主机的 home 目录挂载到本地 /media/remote 目录下:

sudo sshfs -o allow_other -F /home/lu4nx/.ssh/config host:/home/lu4nx /media/remote -d

参数说明:

-d:打开调试选项,如果未能成功挂载,就启用该参数。

-o:挂载选项,有很多,具体请 man sshfs。这里 allow_other 表示挂载以后,本地其他用户都可以访问挂载的目录,否则没权限进入目录。

-F:指定 SSH 的配置文件。比如我本地在 SSH 配置文件中配置好了主机名、指定了证书,要为了省力,就指定它。使用配置文件时,一定要注意,如果配置文件中 IdentityFile 没有使用绝对路径,在用 root 身份挂载时,就会找不到证书,可加上-d参数看到。

如果要单独指定私钥文件,就在 -o 参数值中加上 IdentityFile:

sudo sshfs allow_other, IdentityFile=/home/lu4nx/.ssh/key host:/home/lu4nx /media/remote

挂载好之后,访问本地 /media/remote 目录即可。

1. 查看挂载信息、卸载挂载点

  • 通过 mount 命令可以查看到挂载信息。
  • 通过 df 命令也可以看到挂载的远程文件系统的磁盘占用情况。
  • 用 umount [挂载的目录],可卸载挂载点。

1.1. 配置开机自动挂载

在 /etc/fstab 新增:

sshfs#lu4nx@IP:/home/lu4nx/ /media/remote fuse.sshfs defaults 0 0

接着执行 mount -a 测试是否成功。

注意确保开机时可以访问对应的主机。