如何使用 SSHFS 通过 SSH 挂载远程文件系统

介绍

通过 SSH 连接传输文件,使用 SFTP或 SCP,是移动服务器之间小量数据的一种常见方法,但在某些情况下,可能需要在两个远程环境之间共享整个目录或整个文件系统。

作为一种替代方法,您可以安装 SSHFS 以单独使用 SSH 来安装远程目录,这具有不需要额外配置的显著优势,并继承远程系统上的 SSH 用户的权限。

前提条件

  • 两个 Linux 服务器配置为允许 SSH 访问,其中一个可以是本地机器,而不是云服务器,您可以通过遵循我们的 初始服务器设置指南来实现这一目标,直接从一台机器连接到另一台机器。

步骤1:安装SSHFS

SSHFS 可用于大多数 Linux 发行版. 在 Ubuntu 上,您可以使用apt来安装它。

首先,使用apt update来更新您的包源:

1sudo apt update

然后,使用apt install来安装sshfs包。

1sudo apt install sshfs

<$>[注] 注: SSHFS 可以通过使用名为 FUSE 的文件系统库安装在 Mac 或 Windows 上,这些库提供与 Linux 环境的互操作性。它们将使用相同的概念和连接细节,但可能需要您使用不同的配置接口或安装第三方库。

您可以从项目的 GitHub 存储库中安装 SSHFS for Windows。

您可以从 macFUSE 项目安装 SSHFS for Mac。

步骤 2 – 安装远程文件系统

当你在Linux环境中安装远程文件系统时,你首先需要一个空的目录来安装它。

<$>[注] 注: 在 Windows 上,远程文件系统有时会安装自己的驱动器字母,如G:,在 Mac 上,它们通常安装在/Volumes目录中。

/mnt中创建一个名为droplet的子目录,使用mkdir命令:

1sudo mkdir /mnt/droplet

您现在可以使用sshfs来安装远程目录。

1sudo sshfs -o allow_other,default_permissions sammy@your_other_server:~/ /mnt/droplet

此命令的选项行为如下:

在这种情况下,你正在使用allow_other来允许其他用户访问这个安装(以便它像正常的磁盘安装一样行为,因为sshfs默认情况下阻止这种情况)和default_permissions(以便它否则使用常规文件系统权限)。 *sammy@your_other_server:~/为远程目录提供完整的路径,包括远程用户名sammy,远程服务器your_other_server和路径,在这种情况下为远程用户的首页目录。

如果您收到同行重置连接消息,请确保您已将 SSH 密钥复制到远程系统(https://andsky.com/tech/tutorials/how-to-set-up-ssh-keys-on-ubuntu-22-04)。sshfs在背景中使用普通的 SSH 连接,如果这是您第一次通过 SSH 连接到远程系统,则可能需要接受远程主机的密钥指纹。

1[secondary_label Output]
2The authenticity of host '164.90.133.64 (164.90.133.64)' can't be established.
3ED25519 key fingerprint is SHA256:05SYulMxeTDWFZtf3/ruDDm/3mmHkiTfAr+67FBC0+Q.
4This key is not known by any other names
5Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

注意: 如果您需要使用 SSHFS 安装远程目录而不需要‘sudo’权限,则可以在本地机器上使用‘sudo groupadd fuse’创建名为‘fuse’的用户组,然后使用‘sudo usermod -a -G fuse sammy’将本地用户添加到该组中。

您可以使用ls列出安装目录中的文件,以查看它们是否匹配远程目录的内容:

1ls /mnt/droplet
1[secondary_label Output]
2remote_file1 remote_file2

现在你可以用远程服务器上的文件工作,就好像它是连接到本地机器的物理设备一样。例如,如果你在/mnt/droplet目录中创建一个文件,该文件将出现在你的虚拟服务器上。

重要的是要注意,安装命令仅为当前会话安装远程磁盘,如果虚拟服务器或本地机器被关闭或重新启动,则需要使用相同的过程重新安装。

如果您不再需要这个安装程序,您可以使用mount命令卸载它:

1sudo umount /mnt/droplet

在最后一步中,您将通过配置永久安装的示例行走。

步骤 3 – 永久安装远程文件系统

与其他类型的磁盘和网络安装一样,您可以使用 SSHFS 配置永久安装程序. 要做到这一点,您需要在启动时处理 Linux 文件系统安装程序的名为 `/etc/fstab’ 的文件中添加一个配置条目。

使用nano或您最喜欢的文本编辑器,打开/etc/fstab:

1sudo nano /etc/fstab

在文件的末尾,添加一个类似于此的条目:

1[label /etc/fstab]
23sammy@your_other_server:~/ /mnt/droplet fuse.sshfs noauto,x-systemd.automount,_netdev,reconnect,identityfile=/home/sammy/.ssh/id_rsa,allow_other,default_permissions 0 0

永久安装通常需要一些不同的选项,以确保它们的行为如预期。

  • `Sammy@your_other_server:~/' 再次是远程路径,就像以前一样.
  • `/mnt/droplet' 再次是本地路径.
  • fuse.sshfs' 指定用于挂载此远程目录的驱动程序 。 (_) ) * noauto,x- systemd.automain,netdev,reconnect'是一组选项,它们共同工作,以确保网络驱动器的永久挂载在网络连接从本地机器或远程机器下降时表现优雅. () ) *身份文件=/home/hammy/.sh/id_rsa' 指定本地 SSH 密钥的路径,以便远程目录可以自动挂载。 请注意,这个例子假设你的本地用户名和远程用户名都是 " Sammy " —— 这指的是本地路径。 有必要指定这一点,因为/etc/fstab' 有效运行为root,否则无法知道哪个用户名的SSH配置来检查远程服务器信任的密钥。 (_) ) * `allow_other,default_permissions' 使用上面"mount"命令的相同权限.
  • `0 ' 表示,如果出错,远程文件系统不应被当地机器倾倒或验证。 当挂起本地磁盘时, 这些选项可能不同 。 (_) (英语)

如果您正在使用nano,请按Ctrl+X,然后在提示时按Y,然后按ENTER

应该指出的是,永久性SSHFS安装不一定是受欢迎的。SSHFS连接和SSHFS的性质意味着它通常更适合临时的一次性解决方案,当你不需要承诺SMB或NFS安装时,可以配置更大的冗余度和其他选项。说到这一点,SSHFS非常灵活,更重要的是,它作为一个完整的文件系统驱动程序,允许你将其配置为/etc/fstab,就像任何其他磁盘安装一样,并使用它尽可能多。

结论

在本教程中,您将SSHFS安装从一个Linux环境配置到另一个环境,虽然它不是生产部署的最可扩展或性能的解决方案,但SSHFS可以非常有用,配置最小。

接下来,您可能想了解如何使用可以同时安装在多个服务器上的 object storage

Published At
Categories with 技术
Tagged with
comments powered by Disqus