一般情况下,我们可以通过 samba 协议挂载远程服务器上的文件夹。然而,并非所有服务器都开放了 samba 端口,特别是在外网情况下,通常只会开放一个 ssh 端口。而 sshfs 是通过 ssh 协议模拟的方式,实现将远程服务器上的硬盘挂载到本地。也就是说,只要你的服务器支持ssh连接,你就可以将服务器的硬盘挂载到本地,然后采用本地的方式来操作硬盘里的文件。
目前 sshfs 的实现有两种方案,其中第一种方案 winfsp + sshfs-win,目前还在持续维护更新,更加建议使用;第二种 win-sshfs + dokan 已经多年未更新(win-sshfs 最近一次更新是 2016 年),也不如第一种高效。
直接前往 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图形界面。
安装好上述3个软件后,打开 GUI 界面如下,点击 Add Connection
:
依次填写每一项内容:
NAME:给远程服务器取个名字
Connection:远程服务器配置,如IP、端口、远程用户名、验证方式(密码,或密钥[参考:SSH密钥管理及免密码登陆])
Remote:远程目录配置,挂载后将成为本地对应盘符的根目录
Local:本地盘符设置(注意不要与现有盘符冲突)
示例如下:
点击 Save
保存。
在主界面中点击连接
按钮,即可将远程目录挂在到本地:
此时远程目录已经出现在了本地资源管理器中,未出现可刷新一下,或直接点击GUI主界面连接
按钮左边的打开文件夹
按钮即可进入目录。
长期使用建议在主界面的设置中打开开机自启
:
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,所以先安装 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,就可以将该目录挂载到本地了,如下图所示:
查看我的电脑,发现在 设备和驱动器
中多了一个存储设备(与方式一显示在网络位置中不同),如图所示:
来源:https://blog.xieqiaokang.com/posts/505416489.html
‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧ END ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧