网站搜索

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


撰写本文的主要目的是提供有关如何通过 SSH 使用 SSHFS 客户端挂载远程 Linux 文件系统的分步指南。

本文对于出于任何目的想要在本地系统上安装远程文件系统的用户和系统管理员很有用。我们通过在我们的 Linux 系统之一上安装 SSHFS 客户端进行了实际测试,并成功挂载了远程文件系统。

在我们进一步安装之前,让我们了解一下 SSHFS 及其工作原理。

什么是 SSHFS?

SSHFS 代表 (Secure SHell FileSystem) 客户端,它使我们能够使用 SSH 挂载远程文件系统并与本地计算机上的远程目录和文件进行交互文件传输协议 (SFTP)。

建议阅读:在 Linux 中远程服务器上传输文件的 10 个 sFTP 命令示例

SFTP 是一种安全文件传输协议,通过 Secure Shell 协议提供文件访问、文件传输和文件管理功能。因为 SSH 在通过网络将文件从一台计算机传输到另一台计算机时使用加密,并且 SSHFS 带有内置 FUSE(用户空间中的文件系统)内核模块,允许任何非特权用户创建他们的文件系统而无需修改内核代码。

在本文中,我们将向您展示如何在任何 Linux 发行版上安装和使用 SSHFS 客户端来挂载本地 Linux 计算机上的远程 Linux 文件系统或目录。

步骤1:在Linux系统中安装SSHFS客户端

默认情况下,sshfs 软件包并不存在于所有主要 Linux 发行版上,您需要在 Linux 系统下启用 epel 存储库,以便借助 Yum 命令及其依赖项来安装 sshfs。

yum install sshfs
dnf install sshfs              [On Fedora 22+ releases]
sudo apt-get install sshfs     [On Debian/Ubuntu based systems]

步骤2:创建SSHFS挂载目录

安装 sshfs 软件包后,您需要创建一个安装点目录,用于安装远程文件系统。例如,我们在 /mnt/howtoing 下创建了挂载目录。

mkdir /mnt/tecmint
sudo mkdir /mnt/tecmint     [On Debian/Ubuntu based systems]

步骤 3:使用 SSHFS 挂载远程文件系统

创建挂载点目录后,现在以 root 用户身份运行以下命令,在 /mnt/howtoing 下挂载远程文件系统。在你的情况下,安装目录可以是任何东西。

以下命令将在本地系统的 /mnt/howtoing 下挂载名为 /home/howtoing 的远程目录。 (不要忘记将 x.x.x.x 替换为您的 IP 地址和挂载点)。


sshfs [email :/home/tecmint/ /mnt/tecmint
sudo sshfs -o allow_other [email :/home/tecmint/ /mnt/tecmint     [On Debian/Ubuntu based systems]

如果您的 Linux 服务器配置了基于 SSH 密钥的授权,那么您将需要指定公钥的路径,如以下命令所示。


sshfs -o IdentityFile=~/.ssh/id_rsa [email :/home/tecmint/ /mnt/tecmint
sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa [email :/home/tecmint/ /mnt/tecmint     [On Debian/Ubuntu based systems]

步骤 4:验证远程文件系统是否已安装

如果您成功运行上述命令且没有任何错误,您将看到安装在 /mnt/howtoing 下的远程文件和目录的列表。

cd /mnt/tecmint
ls
[root@ tecmint]# ls
12345.jpg                       ffmpeg-php-0.6.0.tbz2                Linux                                           news-closeup.xsl     s3.jpg
cmslogs                         gmd-latest.sql.tar.bz2               Malware                                         newsletter1.html     sshdallow
epel-release-6-5.noarch.rpm     json-1.2.1                           movies_list.php                                 pollbeta.sql
ffmpeg-php-0.6.0                json-1.2.1.tgz                       my_next_artical_v2.php                          pollbeta.tar.bz2

步骤 5:使用 df -hT 命令检查挂载点

如果运行df -hT命令,您将看到远程文件系统挂载点。

df -hT
样本输出
Filesystem                          Type        Size  Used Avail Use% Mounted on
udev                                devtmpfs    730M     0  730M   0% /dev
tmpfs                               tmpfs       150M  4.9M  145M   4% /run
/dev/sda1                           ext4         31G  5.5G   24G  19% /
tmpfs                               tmpfs       749M  216K  748M   1% /dev/shm
tmpfs                               tmpfs       5.0M  4.0K  5.0M   1% /run/lock
tmpfs                               tmpfs       749M     0  749M   0% /sys/fs/cgroup
tmpfs                               tmpfs       150M   44K  150M   1% /run/user/1000
[email :/home/tecmint fuse.sshfs  324G   55G  253G  18% /mnt/tecmint

建议阅读: 在 Linux 中检查磁盘空间的 12 个有用的“df”命令

第6步:永久挂载远程文件系统

要永久挂载远程文件系统,您需要编辑名为 /etc/fstab 的文件。为此,请使用您喜欢的编辑器打开该文件。

vi /etc/fstab
sudo vi /etc/fstab     [On Debian/Ubuntu based systems]         

转到文件底部并向其中添加以下行,然后保存文件并退出。以下条目使用默认设置挂载远程服务器文件系统。


sshfs#[email :/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 0 0

确保您在服务器之间设置了 SSH 无密码登录,以便在系统重新启动期间自动挂载文件系统。

如果您的服务器配置了基于 SSH 密钥的授权,则添加以下行:


sshfs#[email :/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0

接下来,您需要更新 fstab 文件以反映更改。

mount -a
sudo mount -a   [On Debian/Ubuntu based systems]

第7步:卸载远程文件系统

要卸载远程文件系统,请发出以下命令,它将卸载远程文件系统。

umount /mnt/tecmint

目前就这些,如果您在挂载远程文件系统时遇到任何困难或需要任何帮助,请通过评论与我们联系,如果您觉得本文很有用,请与您的朋友分享。