什么是 SSHFS?

SSHFS(Secure SHell FileSystem)是一个客户端,可以让我们通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互。
SFTP 是一种通过 SSH协议提供文件访问、文件传输和文件管理功能的安全文件传输协议。因为 SSH 在网络中从一台电脑到另一台电脑传输文件的时候使用数据加密通道,并且 SSHFS 内置在 FUSE(用户空间的文件系统)内核模块,允许任何非特权用户在不修改内核代码的情况下创建他们自己的文件系统。

一、在 Linux 系统上安装 SSHFS

默认情况下,sshfs 包不存在所有的主流 Linux 发行版中,你需要在你的 Linux 系统中启用 epel 仓库,在 Yum 命令行的帮助下安装 SSHFS 及其依赖。

  1. yum install -y sshfs
  2. dnf install -y sshfs #在 Fedora 22+ 发行版上
  3. sudo apt-get -y install sshfs #基于 Debian/Ubuntu 的系统

二、创建 SSHFS 挂载目录

当你安装 SSHFS 包之后,你需要创建一个挂载点目录,在这儿你将要挂载你的远程文件系统。
例如,我们在 /mnt/tecmint 下创建挂载目录:
mkdir /mnt/tecmint

三、使用 SSHFS 挂载远程的文件系统

当你已经创建你的挂载点目录之后,现在使用 root 用户运行下面的命令行,在 /mnt/tecmint目录下挂载远程的文件系统。视你的情况挂载目录可以是任何目录。
下面的命令行将会在本地的 /mnt/tecmint 目录下挂载一个叫远程的一个 /home/tecmint 目录(使用你的 IP 地址和挂载点替换 x.x.x.x):

  1. sshfs tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint`
  2. sudo sshfs -o allow_other tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint #基于 Debian/Ubuntu 的系统

如果你的 Linux 服务器配置为基于 SSH 密钥授权,那么你将需要使用如下所示的命令行指定你的公共密钥的路径:

  1. sshfs -o IdentityFile=~/.ssh/id_rsa tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint
  2. sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint #基于 Debian/Ubuntu 的系统

 四、使用 df -hT 命令检查挂载点
命令:df -hT

五、永久挂载远程文件系统

为了永久的挂载远程的文件系统,你需要修改一个叫 /etc/fstab 的文件,使用你最喜欢的编辑器打开文件。

  1. vi /etc/fstab
  2. sudo vi /etc/fstab #基于 Debian/Ubuntu 的系统

移动到文件的底部并且添加下面的一行,保存文件并退出。下面条目表示使用默认的设置挂载远程的文件系统:
sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 0 0

确保服务器之间允许 SSH 无密码登录,这样系统重启之后才能自动挂载文件系统。
如果你的服务器配置为基于 SSH 密钥的认证方式,请加入如下行:
sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0

你需要更新 fstab 文件使修改生效:mount -a

六、卸载远程的文件系统

命令:umount /mnt/tecmint