SSHFS:通过 SSH 挂载远程文件系统
SSHFS 本身是用户空间 ( FUSE )中的文件系统,它使用 SSH 文件传输协议 (SFTP) 来挂载远程文件系统。该sshfs
命令是一个客户端工具,用于使用 SSHFS 在您的计算机上本地挂载来自另一台服务器的远程文件系统。
注意: 用户空间(或用户区)是所有在内核之外运行的操作系统代码。
虽然不如本地文件系统那么高效,但sshfs
它是使用本地程序和工具处理另一台计算机上的文件的简单方法。最重要的是,它sshfs
可以由本地计算机上的非特权用户使用(事实上,建议在使用时不要使用 root 用户或提升权限sshfs
),并且除了启用 SFTP 的 SSH(一种常见设置)之外,它不需要远程计算机上的任何特殊软件。
安装sshfs
该sshfs
工具可从大多数发行版的标准存储库获得,并且最容易使用该发行版的包管理器进行安装。对于 Fedora,安装sshfs
非常简单:dnf install fuse-sshfs
。在基于 Debian 的系统上,包很简单sshfs
。
挂载远程文件系统
安装后sshfs
,通过 SSH 安全地挂载远程文件系统很简单。根据sshfs
手册页 ( man sshfs
),该命令的语法为:
sshfs [user@]host:[dir] mountpoint [options]
对于以前使用过 SSH 或 SCP 的人来说,该语法应该看起来很熟悉。
让我们来看看sshfs
实际操作。首先,创建(或选择现有)目录作为挂载点。请注意,调用该sshfs
命令的本地用户必须具有挂载点的写权限。由于不鼓励使用 root 帐户,因此该策略可能使使用~/mnt
比更可取/mnt
。然后,只需使用该sshfs
命令使用您的 SSH 凭据连接到远程计算机,并指定要挂载到挂载点的远程位置:
# Create the mountpoint
[chris@marvin ~ ]$ mkdir ~/mnt
# Invoke SSHFS with your SSH credentials and the remote location to mount
[chris@marvin ~ ]$ sshfs chris@zaphod:/home/chris/Pictures ~/mnt
# Access the newly mounted filesystem
[chris@marvin ~ ]$ ls ~/mnt/
'Screenshot from 2019-11-17 19-34-3qiwkrdciyedvrdhupuhhiqdgoahoxbsa.png'
注意:有趣的事实,sshfs
不会~
在远程机器上扩展到用户的主目录。
可以像本地文件系统一样通过命令行或使用其他工具来访问和使用已挂载的文件系统:
完成远程文件系统的操作后,使用以下fusermount
命令将其卸载:
# Unmount the remote FS
[chris@marvin ~ ]$ fusermount -u ~/mnt
安装选项
在大多数情况下,默认sshfs
命令可以按原样使用,但sshfs
远非简单命令。有大量选项和标志涵盖各种情况,包括 SSH 和 SFTP 选项、压缩等。查看手册sshfs
( man sshfs
) 了解可用内容的更多详细信息。
然而,最有用的选项之一是reconnect
,它允许客户端重新建立与中断的远程系统的连接:
# Use "-o reconect" to allow the client to reconnect
[chris@marvin ~ ]$ sshfs chris@zaphod:/home/chris/Pictures ~/mnt -o reconnect
启动时挂载远程文件系统
该sshfs
命令还可以在客户端系统的文件中使用,/etc/fstab
以自动挂载远程文件系统。使用正常fstab
语法(包括所需的任何选项),并sshfs
代替文件系统类型:
# file: /etc/fstab
chris@zaphod:/home/chris/Pictures /home/chris/mnt sshfs
请注意,使用sshfs
文件fstab
挂载文件系统必须以 root 身份进行,因此需要对 SSH 凭据进行适当调整,并采取足够的预防措施。
传输端点未连接
Transport endpoint is not connected
当连接中断时(例如,如果客户端计算机更改网络或暂停),您可能会收到错误。在这种情况下,请使用以下fusermount
命令卸载文件系统,如上所述:
[chris@marvin ~ ]$ ls ~/mnt
ls: cannot access '/home/chris/mnt': Transport endpoint is not connected
[chris@marvin ~ ]$ fusermount -u ~/mnt
希望本文为您提供了使用所需的基础知识sshfs
。它是一款出色的工具,可用于在客户端计算机上本地安装时通过加密的 SSH 连接安全地使用远程文件系统。如上所述,由于它sshfs
是 FUSE 文件系统,即使是非特权用户也可以使用它,而无需管理员进行设置。
想要试用 Red Hat Enterprise Linux?立即免费下载。