閱讀255 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何使用 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 及其依賴。


  1. # yum install sshfs
  2. # dnf install sshfs 【在 Fedora 22+ 發行版上】
  3. $ sudo apt-get install sshfs 【基於 Debian/Ubuntu 的係統】

步驟 2:創建 SSHFS 掛載目錄

當你安裝 SSHFS 包之後,你需要創建一個掛載點目錄,在這兒你將要掛載你的遠程文件係統。例如,我們在 /mnt/tecmint 下創建掛載目錄。


  1. # mkdir /mnt/tecmint
  2. $ sudo mkdir /mnt/tecmint 【基於 Debian/Ubuntu 的係統】

步驟 3:使用 SSHFS 掛載遠程的文件係統

當你已經創建你的掛載點目錄之後,現在使用 root 用戶運行下麵的命令行,在 /mnt/tecmint 目錄下掛載遠程的文件係統。視你的情況掛載目錄可以是任何目錄。

下麵的命令行將會在本地的 /mnt/tecmint 目錄下掛載一個叫遠程的一個 /home/tecmint 目錄。(不要忘了使用你的 IP 地址和掛載點替換 x.x.x.x)。


  1. # sshfs tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint
  2. $ sudo sshfs -o allow_other tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint 【基於 Debian/Ubuntu 的係統】

如果你的 Linux 服務器配置為基於 SSH 密鑰授權,那麼你將需要使用如下所示的命令行指定你的公共密鑰的路徑。


  1. # sshfs -o IdentityFile=~/.ssh/id_rsa tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint
  2. $ sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint 【基於 Debian/Ubuntu 的係統】

步驟 4:驗證遠程的文件係統掛載成功

如果你已經成功的運行了上麵的命令並且沒有任何錯誤,你將會看到掛載在 /mnt/tecmint 目錄下的遠程的文件和目錄的列表


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

步驟 5:使用 df -hT 命令檢查掛載點

如果你運行 df -hT命令,你將會看到遠程文件係統的掛載點。


  1. # df -hT

樣本輸出:


  1. Filesystem Type Size Used Avail Use% Mounted on
  2. udev devtmpfs 730M 0 730M 0% /dev
  3. tmpfs tmpfs 150M 4.9M 145M 4% /run
  4. /dev/sda1 ext4 31G 5.5G 24G 19% /
  5. tmpfs tmpfs 749M 216K 748M 1% /dev/shm
  6. tmpfs tmpfs 5.0M 4.0K 5.0M 1% /run/lock
  7. tmpfs tmpfs 749M 0 749M 0% /sys/fs/cgroup
  8. tmpfs tmpfs 150M 44K 150M 1% /run/user/1000
  9. tecmint@192.168.0.102:/home/tecmint fuse.sshfs 324G 55G 253G 18% /mnt/tecmint

步驟 6:永久掛載遠程文件係統

為了永久的掛載遠程的文件係統,你需要修改一個叫 /etc/fstab 的文件。照著做,使用你最喜歡的編輯器打開文件。


  1. # vi /etc/fstab
  2. $ sudo vi /etc/fstab 【基於 Debian/Ubuntu 的係統】

移動到文件的底部並且添加下麵的一行,保存文件並退出。下麵條目表示使用默認的設置掛載遠程的文件係統。


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

確保服務器之間允許 SSH 無密碼登錄,這樣係統重啟之後才能自動掛載文件係統。

如果你的服務器配置為基於 SSH 密鑰的認證方式,請加入如下行:


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

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


  1. # mount -a
  2. $ sudo mount -a 【基於 Debian/Ubuntu 的係統】

步驟 7:卸載遠程的文件係統

為了卸載遠程的文件係統,隻需要發出以下的命令即可。


  1. # umount /mnt/tecmint

原文發布時間為:2016-10-12

本文來自雲棲社區合作夥伴“Linux中國”


最後更新:2017-06-06 15:31:54

  上一篇:go  4 個你需要了解的容器網絡工具
  下一篇:go  WebP 支持:超乎你想象