为了像本地一样访问远端 WordPress 主机上的目录,通常我们会在远端 WordPress 主机上使用 nfs 来汇出目录,并在本地 WordPress 主机上 mount 这个 nfs 档案系统。如果是 Windows 系统,则使用 cifs 或 samba 的方式来访问。
但可能我们忽略了一个远端连线最通用的工具:ssh 。其实很多和远端有关的行为,基于 ssh 都能完成,即使是实现像 NFS 一样的功能。
如何通过 ssh 来挂载远端目录?需要安装 fuse-sshfs 包,这个包在 epel 中提供。使用 fuse-sshfs 包提供的 sshfs 工具可以基于 ssh 直接挂载远端目录,不用像 NFS 一样还要 export 。
$ yum -y install fuse-sshfs
$ rpm -ql fuse-sshfs
/usr/bin/sshfs
/usr/share/doc/fuse-sshfs-2.5
/usr/share/doc/fuse-sshfs-2.5/AUTHORS
/usr/share/doc/fuse-sshfs-2.5/COPYING
/usr/share/doc/fuse-sshfs-2.5/ChangeLog
/usr/share/doc/fuse-sshfs-2.5/FAQ.txt
/usr/share/doc/fuse-sshfs-2.5/NEWS
/usr/share/doc/fuse-sshfs-2.5/README
/usr/share/man/man1/sshfs.1.gz
例如,挂载 192.168.100.150 上的根目录”/” 到本地的/mnt 上。注意:只能挂载远端目录,像普通档案、块装置 (如/dev/sda2) 等无法挂载。
sshfs root@192.168.100.150:/ /mnt
如此一来,以后可以直接访问本地/mnt 来访问远端的根目录。例如复制档案、移动档案、新建档案等等操作。
如果要解除安装挂载点。直接 umount 即可。
umount /mnt
相比于 NFS,sshfs 更简洁,它是基于 fuse 模组来实现的,可以认为 sshfs 所挂载的档案系统是 fuse 档案系统的一种实现。所谓 fuse 档案系统,它全称为 filesystem in userspace,显然,它是使用者空间的档案系统 (其实是一个虚拟档案系统),其功能非常强大,可用于实现自己的档案系统。详细资讯可以 sshfs -h,man sshfs,man fusermount,man mount.fuse 。
但是 NFS 比 sshfs 要完整的多,nfs 毕竟是” 小型” 分散式档案系统,对资料的一致性、完整性实现的都比较完美,访问许可权控制也比 sshfs 要丰富的多。
总的来说,sshfs 可以临时用来快速访问远端档案。
更详细的 sshfs,参见下面的
如何使用 SSHFS 通过 SSH 挂载远端的 Linux 档案系统或者目录
写这篇文章的主要目的就是提供一步一步的指导,关于如何使用 SSHFS 通过 SSH 挂载远端的 Linux 档案系统或目录。
这篇文章对于那些无论出于什么目的,希望在他们本地的系统中挂载远端的档案系统的使用者或者系统管理员有帮助。我们通过 Linux 系统中的一个安装了 SSHFS 客户端进行实际测试,并且成功的挂载了远端的档案系统。
在我们进一步安装之前,让我们了解一下 SSHFS 的相关内容,以及它是如何工作的。
Sshfs 挂载远端的 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 及其依赖。

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

步骤 2:建立 SSHFS 挂载目录
当你安装 SSHFS 包之后,你需要建立一个挂载点目录,在这儿你将要挂载你的远端档案系统。例如,我们在 /mnt/tecmint 下建立挂载目录。

#mkdir/mnt/tecmint
$ sudomkdir/mnt/tecmint【基于 Debian/Ubuntu 的系统】

步骤 3:使用 SSHFS 挂载远端的档案系统
当你已经建立你的挂载点目录之后,现在使用 root 使用者执行下面的命令列,在 /mnt/tecmint 目录下挂载远端的档案系统。视你的情况挂载目录可以是任何目录。
下面的命令列将会在本地的 /mnt/tecmint 目录下挂载一个叫远端的一个 /home/tecmint 目录。(不要忘了使用你的 IP 地址和挂载点替换 x.x.x.x)。

# sshfs tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint【基于 Debian/Ubuntu 的系统】

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

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

步骤 4:验证远端的档案系统挂载成功
如果你已经成功的执行了上面的命令并且没有任何错误,你将会看到挂载在 /mnt/tecmint 目录下的远端的档案和目录的列表

#cd/mnt/tecmint
#ls
[root@ tecmint]#ls
12345.jpg ffmpeg-php-0.6.0.tbz2Linux 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

样本输出:

FilesystemTypeSizeUsedAvailUse%Mounted on
udev devtmpfs 730M0730M0%/dev
tmpfs tmpfs 150M4.9M145M4%/run
/dev/sda1 ext4 31G5.5G24G19%/
tmpfs tmpfs 749M216K748M1%/dev/shm
tmpfs tmpfs 5.0M4.0K5.0M1%/run/lock
tmpfs tmpfs 749M0749M0%/sys/fs/cgroup
tmpfs tmpfs 150M44K150M1%/run/user/1000
tecmint@192.168.0.102:/home/tecmint fuse.sshfs 324G55G253G18%/mnt/tecmint

步骤 6:永久挂载远端档案系统
为了永久的挂载远端的档案系统,你需要修改一个叫 /etc/fstab 的档案。照著做,使用你最喜欢的编辑器开启档案。

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

移动到档案的底部并且新增下面的一行,储存档案并退出。下面条目表示使用预设的设定挂载远端的档案系统。

sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 00

确保站群服务器之间允许 SSH 无密码登入,这样系统重启之后才能自动挂载档案系统。
如果你的站群服务器配置为基于 SSH 金钥的认证方式,请加入如下行:

sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 00

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

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

步骤 7:解除安装远端的档案系统
为了解除安装远端的档案系统,只需要发出以下的命令即可。

#umount/mnt/tecmint