SSHFS(Secure SHell FileSystem)是通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互的工具。

言简意赅,SSHFS基于SFTP传输,传输过程加密,不会泄露数据, SSHFS 内置在 FUSE(用户空间的文件系统)内核模块,允许任何非特权用户在不修改内核代码的情况下创建他们自己的文件系统。

安装:

1
2
3
yum install -y sshfs -y #CentOS

apt-get -y install sshfs #Debian

注意:机器需要支持fuse内核才可以使用sshfs,据我所知,ovz6不支持,其他的系统都支持。

使用:

下面的命令将x.x.x.x的/home目录挂载到本地/test目录:

1
sshfs root@x.x.x.x:/home /test

如果有以下报错:

1
mount helper error: fusermount: fuse device not found, try 'modprobe fuse' first

 OVZ7和LXC构架内核仅为3.x,严格上来说,支持fuse特性,但是博主在OVZ7下使用fuse时,会遇到如下错误:mount helper error: fusermount: fuse device not found, try ‘modprobe fuse’ first,以下是博主亲测的解决办法。

通过查询相关文档,综合下大家的回答,无非就这几类:

  1. openVZ 不支持 fuse,只能在 KVM 架构下安装;
  2. 需要VPS商开放 fuse 模块授权权限;
  3. 没有正确安装 fuse;
  4. fuse 版本太旧,需要更新

以上办法都试过了,问题依旧,后面发现,部分OVZ和LXC架构下 fuse 需要单独调用:

1
mknod -m 666 /dev/fuse c 10 229

单独调用后,fuse恢复正常。

注意:每次重启设备后,fuse需要重新调用!建议设置为开机自启。

也可以使用以下解决办法:

udev规则会在下次重启时擦除 fuse 设备,执行以下命令:

1
update-rc.d -f udev disable

下次重启时,fuse设备就仍然可以用了。

取消挂载:

1
umount -f /test

注意:建议将机器设置为SSH免秘认证,这样挂载就不需要输入密码来挂载。

如果想要开机自动挂载,可以写入开机自启,或者fstab中,具体操作如下:

1
echo 'sshfs#root@x.x.x.x:/home /test fuse.sshfs defaults 0 0' >>/etc/fstab

即可开机自动挂载。