快轉到主要內容

SSHFS,Linux與Windows區網共享資料夾教學,替代Samba

分類   Linux系統 Linux使用技巧
標籤   Linux OpenSSH Windows
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

要在區域網路(局域網)分享資料夾或檔案,很多人會想到架設SMB或Samba服務吧,透過網路磁碟機在Windows與Linux之間共用資料夾非常方便。但若是Linux用戶,你有更好的選擇,那就是SSHFS!

「SSFHS」是基於SFTP協定和FUSE檔案系統所研發的技術,可透過網路分享資料夾,讓使用者將遠端電腦的資料夾掛載到本機使用。

圖例,透過Windows檔案總管掛載SSHFS,檢視遠端Linux電腦的檔案。

圖例,iOS透過Documents APP,連線到SFTP與Linux電腦分享檔案。

SSHFS有以下優點:

  • 自由軟體,不論是Linux、Windows、macOS都可以架設SSHFS服務。
  • 可把遠端資料夾掛載,當作本機資料夾使用,編輯檔案後直接存檔到遠端伺服器。SSHFS透過區域網路傳輸的話速度很快,能夠檢視遠端電腦的照片資料夾,還能用VLC直接播放影片。
  • SSHFS能從Linux、Windows、macOS電腦存取,就連手機也可以!即使作業系統不支援掛載FUSE,也能改用支援SFTP的客戶端來存取檔案。
  • 設定相對SMB/Samba簡單許多,只要電腦安裝OpenSSH伺服器就能連線掛載SSHFS,不用另外開通訊埠,不用額外新增使用者,不需要複雜的權限與設定檔。
  • SSHFS比NFS安全,傳輸全程走SSH加密,防止被攔截監聽。
  • SSHFS支援搭配SSH Tunnel使用,藉由跳板機存取防火牆伺服器後面的檔案。

如果分享的資料夾只是要給自己用的話,那麼SSHFS可說是非常方便的共享資料夾方式!

下面讓我們看看如何設定SSHFS。

這裡我們約定:

  • 伺服端:要分享檔案的電腦
  • 客戶端:存取電腦檔案的裝置

1. 伺服端設定SSH服務
#

伺服端通常是用Linux,不過其實支援OpenSSH Server的系統都可以當作伺服端。

Ubuntu安裝OpenSSH伺服器,並設定開機自動啟動:

sudo apt install openssh-server

sudo systemctl enable --now ssh

Windows透過 PowerShell啟動OpenSSH伺服器

macOS透過 遠端取用啟用OpenSSH伺服器。

2. 查看伺服端IP
#

讓多台電腦位於同一個網路下,取得區域網路IP後,彼此之間才可以傳輸檔案。

例如我伺服端電腦的區域IP是192.168.1.104,這是怎麼知道的呢?假設所有電腦都用乙太網路上網:

Ubuntu使用ip addr指令確認IPV4位址。

Windows 11開啟終端機,輸入ipconfig指令,確認IPV4位址。

macOS開啟終端機,輸入ipconfig getifaddr指令,確認IPV4位址。

3. 決定使用者與掛載的伺服端路徑
#

SSHFS連線的時候會要你輸入電腦的使用者帳號與密碼,帳號的話通常使用你登入伺服端電腦的帳號就可以了。

至於密碼部份,Linux和macOS就是填寫你登入系統的帳號的密碼,而Windows 11的話得填寫Microsoft帳號的密碼(除非你使用離線帳號,那就填寫PIN碼)。

接著決定要存取的伺服端路徑。

作業系統有許多資料夾,如果SSHFS連線時不填路徑,則預設會進入使用者家目錄,像Linux就是/home/使用者名稱

若要進入特定資料夾需要指定絕對路徑,例如我Linux把檔案放在/home/user/Documents/,那麼連線時就得填寫這個路徑。

4. 設定客戶端掛載SSHFS
#

Linux
#

純文字指令:Ubuntu參考 Github的說明安裝sshfs套件:

sudo apt install sshfs

並使用以下指令掛載:

sshfs 伺服端使用者名稱@伺服端IP:/要掛載的伺服端目錄/ /掛載點/

# 範例,允許所有使用者存取掛載的目錄,並將伺服端的/home/user/Documents/掛載到客戶端的/mnt

sshfs -o allow_other [email protected]:/home/user/Documents/ /mnt/

圖形介面:

如果你使用GNOME桌面,開啟GNOME檔案管理器,點選其他位置 → 連接到伺服器,輸入sftp://伺服端的IP,再輸入帳號密碼連線。GNOME背後會透過GVfs掛載SSHFS。

如果你使用KDE Plasma桌面,使用SSH指令登入伺服端一次。接著再開啟Dolphin檔案管理器,點選網路,新增網路資料夾,選SFTP,輸入IP與帳號密碼連線。KDE背後會透過KIO掛載SSHFS。

Windows
#

  1. 請先安裝 WinFsp SSHFS-Win,重新開機。

  2. 然後對檔案總管的「網路」,按右鍵,連線到網路磁碟機

  3. 路徑輸入\\sshfs.r\伺服端IP\伺服端路徑\,按下Enter,輸入伺服端的帳號密碼即可連線。請注意Windows的路徑是\反斜線。

  4. 隨後伺服端資料夾就會出現在Windows檔案總管的「本機磁碟」頁面。

macOS
#

安裝 SSHFS GUI Wrapper,輸入伺服端的IP與帳號密碼連線。

Android
#

Android沒有Root權限的話是不能掛載SSHFS的,這時請改用支援SFTP的客戶端,例如開源的 FTPClient by qwerty287

iOS
#

iOS不能掛載SSHFS,所以得使用SFTP。

iOS內建的檔案APP目前尚未支援SFTP,得用第三方APP。例如專有軟體 Documents by Readdle支援SFTP登入。

5. 如何從外網掛載SSHFS
#

安裝 內網穿透軟體,即可跨越區網,從外部網路掛載SSHFS。

此時SSHFS的存取速度會大大受到你網速的影響。

相關文章

Linux系統如何讀取Windows的NTFS硬碟&開機自動掛載
分類   Linux系統 Linux使用技巧
標籤   Windows Linux GNOME KDE Plasma
UxPlay用法 ~ 投影iPhone螢幕到Linux電腦,跨平台免費的AirPlay解決方案
分類   Linux系統 Linux好用軟體
標籤   AirPlay IOS Linux Windows MacOS
Windows系統如何掛載Linux的BTRFS硬碟:使用WinBTRFS
分類   Linux系統 Linux使用技巧
標籤   Linux Windows

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。