1. 程式人生 > >linux下使用sshfs掛載遠端linux檔案系統或目錄

linux下使用sshfs掛載遠端linux檔案系統或目錄

文章來源
寫這篇文章的主要目的就是提供一步一步的指導,關於如何使用 SSHFS 通過 SSH 掛載遠端的 Linux 檔案系統或目錄。

這篇文章對於那些無論出於什麼目的,希望在他們本地的系統中掛載遠端的檔案系統的使用者或者系統管理員有幫助。我們通過 Linux 系統中的一個安裝了 SSHFS 客戶端進行實際測試,並且成功的掛載了遠端的檔案系統。

在我們進一步安裝之前,讓我們瞭解一下 SSHFS 的相關內容,以及它是如何工作的。

什麼是 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              【在 Fedora 22+ 發行版上】
$sudo apt-get install sshfs     【基於 Debian/Ubuntu 的系統】

步驟 2:建立 SSHFS 掛載目錄

當你安裝 SSHFS 包之後,你需要建立一個掛載點目錄,在這兒你將要掛載你的遠端檔案系統。例如,我們在 /mnt/tecmint 下建立掛載目錄。

# mkdir /mnt/tecmint
$ sudo mkdir /mnt/tecmint     【基於 Debian/Ubuntu 的系統】

步驟 3:使用 SSHFS 掛載遠端的檔案系統

當你已經建立你的掛載點目錄之後,現在使用 root 使用者執行下面的命令列,在 /mnt/tecmint 目錄下掛載遠端的檔案系統。視你的情況掛載目錄可以是任何目錄。

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

sshfs [email protected]x.x.x.x:/home/tecmint/ /mnt/tecmint
$ sudo sshfs -o allow_other [email protected]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
[[email protected] 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
tecmint@192.168.0.102:/home/tecmint fuse.sshfs  324G   55G  253G  18% /mnt/tecmint

步驟 6:永久掛載遠端檔案系統

為了永久的掛載遠端的檔案系統,你需要修改一個叫 /etc/fstab 的檔案。照著做,使用你最喜歡的編輯器開啟檔案。

# vi /etc/fstab
$ sudo vi /etc/fstab     【基於 Debian/Ubuntu 的系統】

移動到檔案的底部並且新增下面的一行,儲存檔案並退出。下面條目表示使用預設的設定掛載遠端的檔案系統。

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

確保伺服器之間允許 SSH 無密碼登入,這樣系統重啟之後才能自動掛載檔案系統。

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

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

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

# mount -a
$ sudo mount -a   【基於 Debian/Ubuntu 的系統】

步驟 7:解除安裝遠端的檔案系統

# umount /mnt/tecmin

作者:Ravi Saive 譯者:yangmingming 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出