如何使用SSHFS通過SSH 掛載遠(yuǎn)程的Linux文件系統(tǒng)或者目錄
寫這篇文章的主要目的就是提供一步一步的指導(dǎo),關(guān)于如何使用 SSHFS 通過 SSH 掛載遠(yuǎn)程的 Linux 文件系統(tǒng)或目錄。
這篇文章對于那些無論出于什么目的,希望在他們本地的系統(tǒng)中掛載遠(yuǎn)程的文件系統(tǒng)的用戶或者系統(tǒng)管理員有幫助。我們通過 Linux 系統(tǒng)中的一個(gè)安裝了 SSHFS 客戶端進(jìn)行實(shí)際測試,并且成功的掛載了遠(yuǎn)程的文件系統(tǒng)。
在我們進(jìn)一步安裝之前,讓我們了解一下 SSHFS 的相關(guān)內(nèi)容,以及它是如何工作的。
什么是 SSHFS?
SSHFS(Secure SHell FileSystem)是一個(gè)客戶端,可以讓我們通過 SSH 文件傳輸協(xié)議(SFTP)掛載遠(yuǎn)程的文件系統(tǒng)并且在本地機(jī)器上和遠(yuǎn)程的目錄和文件進(jìn)行交互。
SFTP 是一種通過 SSH 協(xié)議提供文件訪問、文件傳輸和文件管理功能的安全文件傳輸協(xié)議。因?yàn)?SSH 在網(wǎng)絡(luò)中從一臺電腦到另一臺電腦傳輸文件的時(shí)候使用數(shù)據(jù)加密通道,并且 SSHFS 內(nèi)置在 FUSE(用戶空間的文件系統(tǒng))內(nèi)核模塊,允許任何非特權(quán)用戶在不修改內(nèi)核代碼的情況下創(chuàng)建他們自己的文件系統(tǒng)。
在這篇文章中,我們將會向你展示在任意 Linux 發(fā)行版上如何安裝并且使用 SSHFS 客戶端,在本地 Linux 機(jī)器上掛載遠(yuǎn)程的 Linux 文件系統(tǒng)或者目錄。
步驟 1:在 Linux 系統(tǒng)上安裝 SSHFS
默認(rèn)情況下,sshfs 包不存在所有的主流 Linux 發(fā)行版中,你需要在你的 Linux 系統(tǒng)中啟用 epel 倉庫,在 Yum 命令行的幫助下安裝 SSHFS 及其依賴。
- # yum install sshfs
- # dnf install sshfs 【在 Fedora 22+ 發(fā)行版上】
- $ sudo apt-get install sshfs 【基于 Debian/Ubuntu 的系統(tǒng)】
步驟 2:創(chuàng)建 SSHFS 掛載目錄
當(dāng)你安裝 SSHFS 包之后,你需要?jiǎng)?chuàng)建一個(gè)掛載點(diǎn)目錄,在這兒你將要掛載你的遠(yuǎn)程文件系統(tǒng)。例如,我們在 /mnt/tecmint 下創(chuàng)建掛載目錄。
- # mkdir /mnt/tecmint
- $ sudo mkdir /mnt/tecmint 【基于 Debian/Ubuntu 的系統(tǒng)】
步驟 3:使用 SSHFS 掛載遠(yuǎn)程的文件系統(tǒng)
當(dāng)你已經(jīng)創(chuàng)建你的掛載點(diǎn)目錄之后,現(xiàn)在使用 root 用戶運(yùn)行下面的命令行,在 /mnt/tecmint 目錄下掛載遠(yuǎn)程的文件系統(tǒng)。視你的情況掛載目錄可以是任何目錄。
下面的命令行將會在本地的 /mnt/tecmint 目錄下掛載一個(gè)叫遠(yuǎn)程的一個(gè) /home/tecmint 目錄。(不要忘了使用你的 IP 地址和掛載點(diǎn)替換 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 的系統(tǒng)】
如果你的 Linux 服務(wù)器配置為基于 SSH 密鑰授權(quán),那么你將需要使用如下所示的命令行指定你的公共密鑰的路徑。
- # 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 的系統(tǒng)】
步驟 4:驗(yàn)證遠(yuǎn)程的文件系統(tǒng)掛載成功
如果你已經(jīng)成功的運(yùn)行了上面的命令并且沒有任何錯(cuò)誤,你將會看到掛載在 /mnt/tecmint 目錄下的遠(yuǎn)程的文件和目錄的列表
- # cd /mnt/tecmint
- # ls
- [root@ 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 命令檢查掛載點(diǎn)
如果你運(yùn)行 df -hT命令,你將會看到遠(yuǎn)程文件系統(tǒng)的掛載點(diǎn)。
- # 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:永久掛載遠(yuǎn)程文件系統(tǒng)
為了永久的掛載遠(yuǎn)程的文件系統(tǒng),你需要修改一個(gè)叫 /etc/fstab 的文件。照著做,使用你最喜歡的編輯器打開文件。
- # vi /etc/fstab
- $ sudo vi /etc/fstab 【基于 Debian/Ubuntu 的系統(tǒng)】
移動(dòng)到文件的底部并且添加下面的一行,保存文件并退出。下面條目表示使用默認(rèn)的設(shè)置掛載遠(yuǎn)程的文件系統(tǒng)。
- sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs defaults 0 0
確保服務(wù)器之間允許 SSH 無密碼登錄,這樣系統(tǒng)重啟之后才能自動(dòng)掛載文件系統(tǒng)。
如果你的服務(wù)器配置為基于 SSH 密鑰的認(rèn)證方式,請加入如下行:
- sshfs#tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint fuse.sshfs IdentityFile=~/.ssh/id_rsa defaults 0 0
接下來,你需要更新 fstab 文件使修改生效。
- # mount -a
- $ sudo mount -a 【基于 Debian/Ubuntu 的系統(tǒng)】
步驟 7:卸載遠(yuǎn)程的文件系統(tǒng)
為了卸載遠(yuǎn)程的文件系統(tǒng),只需要發(fā)出以下的命令即可。
- # umount /mnt/tecmint
目前為止就這樣了,如果你在掛載遠(yuǎn)程文件系統(tǒng)的時(shí)候遇到任何問題或者需要任何幫助,請通過評論聯(lián)系我們,如果你感覺這篇文章非常有用,請分享給你的朋友們。