使用 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 ~/.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 测试是否成功。
注意确保开机时可以访问对应的主机。