首页 > Linux运维 > 如何使用sshfs通过ssh挂载远程的Linux文件系统或者目录
2016
10-18

如何使用sshfs通过ssh挂载远程的Linux文件系统或者目录

什么是 SSHFS?

SSHFS(Secure SHell FileSystem)是一个客户端,可以让我们通过 SSH 文件传输协议(SFTP)挂载远程的文件系统并且在本地机器上和远程的目录和文件进行交互。

SFTP 是一种通过 SSH 协议提供文件访问、文件传输和文件管理功能的安全文件传输协议。因为 SSH 在网络中从一台电脑到另一台电脑传输文件的时候使用数据加密通道,并且 SSHFS 内置在 FUSE(用户空间的文件系统)内核模块,允许任何非特权用户在不修改内核代码的情况下创建他们自己的文件系统。

在这篇文章中,我们将会向你展示在任意 Linux 发行版上如何安装并且使用 SSHFS 客户端,在本地 Linux 机器上挂载远程的 Linux 文件系统或者目录。

步骤 1:在 Linux 系统上安装 SSHFS

默认情况下,sshfs 包不存在所有的主流 Linux 发行版中,你需要在你的 Linux 系统中启用 epel 仓库,在 Yum 命令行的帮助下安装 SSHFS 及其依赖。
先安装epel命令仓库

    # yum install epel-release

    # yum install sshfs
    # dnf install sshfs              【在 Fedora 22+ 发行版上】
    $ sudo apt-get install sshfs     【基于 Debian/Ubuntu 的系统】

步骤 2:创建 SSHFS 挂载目录

当你安装 SSHFS 包之后,你需要创建一个挂载点目录,在这儿你将要挂载你的远程文件系统。例如,我们在 /mnt/data 下创建挂载目录。

    # mkdir /mnt/data
    $ sudo mkdir /mnt/data     【基于 Debian/Ubuntu 的系统】

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

当你已经创建你的挂载点目录之后,现在使用 root 用户运行下面的命令行,在 /mnt/data 目录下挂载远程的文件系统。视你的情况挂载目录可以是任何目录。

下面的命令行将会在本地的 /mnt/tecmint 目录下挂载一个叫远程的一个 /home/data 目录。(不要忘了使用你的 IP 地址和挂载点替换 192.168.80.128)。

    # sshfs root@192.168.80.128:/home/data/ /mnt/data
    $ sudo sshfs -o allow_other data@192.168.80.128:/home/data/ /mnt/data      【基于 Debian/Ubuntu 的系统】

如果你的 Linux 服务器配置为基于 SSH 密钥授权,那么你将需要使用如下所示的命令行指定你的公共密钥的路径。

    # sshfs -o IdentityFile=~/.ssh/id_rsa root@192.168.80.128:/home/data/ /mnt/data
    $ sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa root@192.168.80.128:/home/data/ /mnt/data     【基于 Debian/Ubuntu 的系统】

步骤 4:验证远程的文件系统挂载成功

如果你已经成功的运行了上面的命令并且没有任何错误,你将会看到挂载在 /mnt/data 目录下的远程的文件和目录的列表

    # cd /mnt/data
    # ls
[root@localhost data]# ls -l
total 4
-rw-r--r--  1 root root    0 Oct 18 11:28 alao.txt
-rw-r--r--  1 root root    0 Oct 18 11:27 a.txt
-rw-r--r--  1 root root    0 Oct 18 11:27 b.txt
-rw-r--r--  1 root root    0 Oct 18 11:27 c.txt
-rw-r--r--  1 root root    0 Oct 18 11:27 laofuxi.com
drwxr-xr-x. 6 root root 4096 Sep 18 21:42 www

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

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

    # df -hT

样本输出:

    Filesystem           Type        Size  Used Avail Use% Mounted on
    /dev/mapper/VolGroup-lv_root
                         ext4         18G  3.0G   14G  19% /
    tmpfs                tmpfs       238M     0  238M   0% /dev/shm
    /dev/sda1            ext4        477M   52M  400M  12% /boot
    root@192.168.80.128:/home/data/
                     fuse.sshfs   18G  1.9G   16G  11% /mnt/data

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

为了永久的挂载远程的文件系统,你需要修改一个叫 /etc/fstab 的文件。照着做,使用你最喜欢的编辑器打开文件。

    # vi /etc/fstab
    $ sudo vi /etc/fstab     【基于 Debian/Ubuntu 的系统】         

移动到文件的底部并且添加下面的一行,保存文件并退出。下面条目表示使用默认的设置挂载远程的文件系统。

    sshfs#root@192.168.80.128:/home/data/ /mnt/data fuse.sshfs defaults 0 0

确保服务器之间允许 SSH 无密码登录,这样系统重启之后才能自动挂载文件系统。

如果你的服务器配置为基于 SSH 密钥的认证方式,请加入如下行:

    sshfs#root@192.168.80.128:/home/data/ /mnt/data fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0

接下来,你需要更新 fstab 文件使修改生效。

    # mount -a
    $ sudo mount -a   【基于 Debian/Ubuntu 的系统】

步骤 7:卸载远程的文件系统

为了卸载远程的文件系统,只需要发出以下的命令即可。

    # umount /mnt/data

目前为止就这样了,如果你在挂载远程文件系统的时候遇到任何问题或者需要任何帮助,请通过评论联系我们,如果你感觉这篇文章非常有用,请分享给你的朋友们。

最后编辑:
作者:劳福喜
这个作者貌似有点懒,什么都没有留下。

留下一个回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据