sshfs远程访问服务器文件系统
SSHFS是一个基于FUSE的文件系统客户端,用户通过SSH挂载目录。
以下实践在CentOS 7上实现
安装
挂载
远程挂载文件目录非常简单
举例
执行sshfs挂载
如果远程主机的ssh端口是9876,则
sshfs
命令还可以加上参数-p 9876
-C
表示启用网络压缩,可以减轻网络流量
卸载sshfs挂载
如果无法卸载,则通过杀死
sshfs
进程来卸载(注意先执行sync
指令来刷缓存到磁盘确保数据安全)
异常错误排查
能够保存文件,但是git时提示fatal: could not set 'core.filemode' to 'true'
fatal: could not set 'core.filemode' to 'true'
在使用sshfs远程挂载了服务器上的目录后,使用git clone
同步代码,却发现出现以下报错:
这个报错在以往sshfs远程挂载服务器文件系统没有遇到过,怀疑和服务器端的sshd版本有关。出现异常的服务器环境是CentOS 5.7操作系统,对应的客户端是Fedora 27。(正常的案例中,服务器端是CentOS 7.3+, Fedora 26)
不过,上述sshfs挂载的远程服务器目录能够正常读写文件,所以改为在服务器端直接使用git绕开问题。
sshfs挂载时报错Transport endpoint is not connected
Transport endpoint is not connected
这个报错可能和使用多路复用有关,在这个操作中,我使用了Jetbrains的DataGrip工具,通过ssh tunnel访问远程服务器上Docker容器中的mysql。此时再使用sshfs挂载远程服务器的目录时提示报错
报错
此时df
命令并不能看到挂载的远程目录,但是使用mount
命令可以看到远程目录已经挂载
解决方法参考Transport endpoint is not connected
强制卸载
-u
表示umount
-z
表示force强制
然后就可以再次挂载
sshfs: Transport endpoint is not connected提供的解决方法是增加一个-o allow_other
参数允许非root用户挂载,不过要修改/etc/fuse.conf
配置,取消user_allow_other
的注释。
参考
Last updated