SSHFS(Secure SHell FileSystem)是一個客戶端,可以讓我們通過 SSH 文件傳輸協議(SFTP)掛載遠程的文件系統並且在本地機器上和遠程的目錄和文件進行交互。
SFTP 是一種通過 SSH 協議提供文件訪問、文件傳輸和文件管理功能的安全文件傳輸協議。因為 SSH 在網絡中從一台電腦到另一台電腦傳輸文件的時候使用數據加密通道,並且 SSHFS 內置在 FUSE(用戶空間的文件系統)內核模塊,允許任何非特權用戶在不修改內核代碼的情況下創建他們自己的文件系統。
1.安裝SSHFS
# yum install sshfs # dnf install sshfs 【在 Fedora 22+ 發行版上】 # sudo apt-get install sshfs 【基於 Debian/Ubuntu 的系統】
2.創建SSHFS掛載目錄
# mkdir /mnt/tecmint
$ sudo mkdir /mnt/tecmint 【基於 Debian/Ubuntu 的系統】
3.掛載
當你已經創建你的掛載點目錄之后,現在使用 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 的系統】
如果端口不是默認的22,則需要指定端口
-p 22000
$ sudo sshfs -o allow_other -p 22000 tecmint@x.x.x.x:/home/tecmint/ /mnt/tecmint
如果你的 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 目錄下的遠程的文件和目錄的列表
5.使用df -hT檢查掛載點
# df -hT
將會顯示遠程文件系統的掛載點
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 密鑰的認證方式,請加入如下行:
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 的系統
7.卸載遠程的文件系統
# umount /mnt/tecmint
如果想要使用密鑰登錄:
1.在掛載機上生成密鑰對
ssh-keygen -t rsa
2.將公鑰復制到服務器上
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.xx
3.驗證
ssh root@xx.xx.xx.xx

添加開機自自動掛載:
[root@mgr03 ~]# cat /usr/lib/systemd/system/sshfs-diankezk.service [Unit] Description=SSHFS MOUNT mgr02 10.0.0.7 After=sshd.service [Service] Type=forking ExecStart=/usr/bin/sshfs 10.0.0.7:/data1 /mnt -o reconnect -o cache=yes -o allow_other ExecStop=/usr/bin/umount /mnt [Install] WantedBy=multi-user.target
開啟:
systemctl enable sshfs-diankezk.service
常見問題:
1.目標服務器升級重啟之后, 日志掛載失效
解決方案:
1.卸載之前的掛載 umount file_dir 2. 重新掛載還是錯誤read: Connection reset by peer 使用調試模式 查看錯誤信息 sshfs -o reconnect 111.1.11.111:/opt/logs /data/logs -o debug -o sshfs_debug -o debug -o sshfs_debug 原來是證書發生了變化 ,需要更新證書 刪除老的證書: ssh-keygen -f "/root/.ssh/known_hosts" -R 111.11.11.111 或者直接在文件中找到該ip地址刪除即可 然后使用掛載命令重新掛載即可, 然后重新輸入命令
2.安裝sshfs報沒有可用的安裝包
原因: 默認源沒有該工具, 需要先安裝epel源
yum install -y epel-release yum install -y sshfs #yum -y install fuse-sshfs
