如何使用SSHFS在SSH上挂载远程目录
SSHFS(SSH文件系统)是一个基于FUSE的文件系统客户端,用于通过SSH连接装载远程目录。SSHFS使用SFTP协议,它是SSH的一个子系统,在大多数SSH服务器上都是默认启用的。
与其他网络文件系统协议(如NFS和Samba)相比,SSHFS的优势在于它不需要在服务器端进行任何额外配置。要使用SSHFS,你只需要对远程服务器进行SSH访问。
由于SSHFS使用SFTP,服务器和客户端之间的所有传输数据都必须进行加密和解密。这导致与NFS相比,性能略有下降,而且客户端和服务器的CPU使用率更高。
本教程将告诉你如何在Linux、macOS和Windows上安装SSHFS客户端,以及如何挂载一个远程的目录。
安装SSHFS
SSHFS软件包可用于所有主要的操作系统,而且安装相当简单明了。
在Ubuntu和Debian上安装SSHFS
SSHFS可以从默认的Ubuntu和Debian软件库中获得。更新软件包索引并通过输入以下内容安装sshfs客户端:
sudo apt update
sudo apt install sshfs
在CentOS系统上安装SSHFS
在CentOS和其他Red Hat派生系统上,运行以下命令来安装sshfs:
sudo yum install sshfs
在macOS上安装SSHFS
macOS 用户可以通过从 osxfuse 网站或通过 Homebrew 下载 FUSE 和 SSHFS 软件包来安装 SSHFS 客户端:
brew cask install osxfuse
brew install sshfs
在Windows系统上安装SSHFS
Windows用户需要安装两个软件包,即WinFsp和SSHFS-Win。
挂载一个远程文件系统
下面的说明适用于所有的Linux发行版和macOS。
为了挂载一个远程目录,SSH用户需要能够访问它。SSHFS挂载命令的形式如下:
sshfs [user@]host:[remote_directory] mountpoint [options]
sshfs命令将读取SSH配置文件并使用每个主机的设置。如果没有指定远程目录,它默认为远程用户的主目录。
例如,要在IP地址为 "192.168.121.121"的远程主机上挂载一个名为 "linuxize"的用户的主目录,首先创建一个目录,作为挂载点,它可以是你想要的任何位置:
mkdir ~/linuxizeremote
然后使用sshfs命令来挂载远程的目录:
sshfs linuxize@192.168.121.121:/home/linuxize /home/linuxize/linuxizeremote
你会被提示输入用户密码。为了避免每次加载远程目录时输入密码,生成SSH密钥并设置无密码SSH登录 。
现在,你可以用与本地文件相同的方式与位于远程服务器上的目录和文件进行交互。例如,你可以编辑、删除、重命名或创建新文件和目录。
如果你想永久地挂载远程目录,你需要编辑本地机器的/etc/fstab
文件,添加一个新的挂载条目。这样,当你的系统启动时,它将自动挂载远程目录。
要通过SSHFS从/etc/fstab
挂载一个远程目录,请使用fuse.sshfs
作为文件系统的类型。
user@host:/remote/dir /local/mountpoint fuse.sshfs defaults 0 0
当创建一个持久性挂载时,确保你可以使用基于SSH密钥的认证来连接远程主机。
在Windows上挂载一个远程文件系统
Windows用户可以使用Windows资源管理器将一个网络驱动器映射到SSH服务器上的远程目录。
打开Windows Explorer,右击 "这台电脑",选择 "映射网络驱动器"。选择一个要挂载的驱动器,并在 "文件夹"栏中按以下格式输入远程用户、服务器和路径:
\\sshfs\user@host[\PATH]
在写这篇文章的时候,SSHFS-Win不支持基于密钥的认证,所以需要将远程ssh服务器配置为接受基于密码的认证。
有关更详细的信息,请查看SSHFS-Win手册。
解除对远程文件系统的挂载
要分离一个被挂载的文件系统,请使用umount
或fusermount
命令,后面跟上它被挂载的目录(挂载点):
fusermount -u /local/mountpoint
umount /local/mountpoint
总结
在本指南中,您已经学会了如何使用SSHFS来通过SSH挂载一个远程目录。当你想使用你的本地机器应用程序与远程文件进行交互时,这可能很有用。
关于sshfs选项的完整列表,请在你的终端输入man sshfs
。
您可能还想通过设置SFTP Chroot Jail环境和更改默认的SSH端口来限制用户对其主目录的访问,以便为您的服务器添加额外的安全层。
如果你有任何问题或反馈意见,请随时留言。