為了像本地一樣訪問遠端 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