一般情況下,我們可以通過 samba 協議掛載遠程服務器上的文件夾。然而,並非所有服務器都開放了 samba 端口,特別是在外網情況下,通常只會開放一個 ssh 端口。而 sshfs 是通過 ssh 協議模擬的方式,實現將遠程服務器上的硬盤掛載到本地。也就是說,只要你的服務器支持ssh連接,你就可以將服務器的硬盤掛載到本地,然后采用本地的方式來操作硬盤里的文件。
目前 sshfs 的實現有兩種方案,其中第一種方案 winfsp + sshfs-win,目前還在持續維護更新,更加建議使用;第二種 win-sshfs + dokan 已經多年未更新(win-sshfs 最近一次更新是 2016 年),也不如第一種高效。
方式一:winfsp + sshfs-win (推薦)
下載
直接前往 github 對應項目的 release 中下載最新版本即可,需注意 sshfs-win 對 winfsp 的最低版本依賴(下載最新版本一般即可滿足),另外有GUI(用戶圖形操作界面)可供下載,建議下載。
- sshfs-win:https://github.com/billziss-gh/sshfs-win/releases
- winfsp:https://github.com/billziss-gh/winfsp/releases
- SSHFS-Win Manager:https://github.com/evsar3/sshfs-win-manager/releases (GUI,可選)
快速使用
可使用GUI圖形界面(方式A),亦可手動掛載(方式B),建議使用GUI圖形界面。
方式A:使用GUI(推薦)
新建連接
安裝好上述3個軟件后,打開 GUI 界面如下,點擊 Add Connection
:
依次填寫每一項內容:
- NAME:給遠程服務器取個名字
- Connection:遠程服務器配置,如IP、端口、遠程用戶名、驗證方式(密碼,或密鑰[參考:SSH密鑰管理及免密碼登陸])
- Remote:遠程目錄配置,掛載后將成為本地對應盤符的根目錄
- Local:本地盤符設置(注意不要與現有盤符沖突)
示例如下:
點擊 Save
保存。
掛在遠程目錄
在主界面中點擊連接
按鈕,即可將遠程目錄掛在到本地:
此時遠程目錄已經出現在了本地資源管理器中,未出現可刷新一下,或直接點擊GUI主界面連接
按鈕左邊的打開文件夾
按鈕即可進入目錄。
長期使用建議在主界面的設置中打開開機自啟
:
方式B:手動掛載
掛載路徑
1. SSH 使用默認端口(22)
此時,對應的 ssh 登陸命令為 ssh username@remote_ip
,那么使用 sshfs-win 掛載遠程服務器根目錄和 home 目錄的地址為:
# 根目錄
\\sshfs.r\username@remote_ip\
# home 目錄
\\sshfs\username@remote_ip\
# 或者 \\sshfs.r\username@remote_ip\home\username\
例如:\\sshfs.r\xieqk@10.168.9.87\
,注意路徑里面的分隔符為 windows 使用的反斜杠 \
。
2. SSH 使用其它端口(外網端口轉發連接內網服務器)
此時,ssh 登陸命令為 ssh -p port username@remote_ip
,對應的 sshfs-win 掛載遠程服務器根目錄和 home 目錄的地址在之前的 remote_ip
后加上 !port
即可:
# 根目錄
\\sshfs.r\username@remote_ip!port\
# home 目錄
\\sshfs\username@remote_ip!port\
# 或者:\\sshfs.r\username@remote_ip!port\home\username\
例如:\\sshfs.r\xieqk@168.10.9.87!34567\
。
登陸掛載遠程目錄
將上述 sshfs
路徑輸入 windows 文件資源管理器地址欄,輸入密碼即可進入。(注意:彈窗中的賬號顯示的為 windows 的本地賬號,不用修改。遠程服務器的用戶名已經包含在之前的 sshfs
路徑之中,所以此處只需正常輸入遠程用戶對應的密碼即可。)
對於常用的遠程目錄,建議通過 映射網絡驅動器
長期掛載於本地。
在 映射網絡驅動器
中,可自行分配驅動器盤號,然后在 文件夾
處輸入上述 sshfs
路徑,點擊完成后在彈出的登錄框處輸入密碼即可完成掛載。
之后,可在 windows 文件瀏覽器的網絡位置中看到已經掛載的所有遠程目錄:
詳細參數(可跳過,需要時再查看)
sshfs-win 具體語法形式如下,其中 []
中的內容為選填項,若為默認值可不填:
\\sshfs\[LOCUSER=]REMUSER@HOST[!PORT][\PATH]
\\sshfs.r\[LOCUSER=]REMUSER@HOST[!PORT][\PATH]
\\sshfs.k\[LOCUSER=]REMUSER@HOST[!PORT][\PATH]
-
REMUSER
: 即 remote user,指 SSH 登陸遠程主機時的用戶名。 -
HOST
:遠程服務器,如 IP 地址,DNS 服務器名稱 或 DNS 服務器 IP 地址 -
PORT
:SSH 登陸所使用的端口號 (選填,默認為 SSH(22) 端口). -
PATH
:進入的遠程服務器路徑,可按照如下設置:- 前綴
sshfs
對應為HOST:~REMUSER/PATH
,即遠程服務器上相對於該用戶home
目錄的相對路徑:/home/remote_user/PATH
。 - 前綴
sshfs.r
對應為HOST:/PATH
即遠程服務器上相對於根(root)目錄的路徑:/PATH
。 - 前綴
sshfs.k
與第一項相同,對應為HOST:~REMUSER/PATH
,但它使用 Windows 本地當前用戶位於%USERPROFILE%/.ssh/id_rsa
下的 SSH 密鑰進行認證(需進行遠程服務器配置,可參靠SSH 密鑰管理及免密碼登陸),不需要輸入密碼。(備注:使用前兩項連接時,windows 也會提醒記住密碼,所以只需要第一次輸入密碼並記住即可)
- 前綴
-
LOCUSER
windows本地用戶名,可不填。
方式二:win-sshfs + Dokan(舊,不推薦)
下載
win-sshfs 依賴 Dokan,所以先安裝 Dokan 再正常安裝 win-sshfs 即可:
- Dokan:https://github.com/dokan-dev/dokany/releases
- win-sshfs:https://github.com/dokan-dev/dokany/releases
使用
打開win-sshfs,點擊Add,在界面輸入要鏈接的服務器的地址、端口號和用戶名密碼等信息,並設置好要掛載的目錄,點擊save,在確保可以通過ssh鏈接的情況下,點擊mount,就可以將該目錄掛載到本地了,如下圖所示:
查看我的電腦,發現在 設備和驅動器
中多了一個存儲設備(與方式一顯示在網絡位置中不同),如圖所示: