Windows 自带的有几个痛点: 1 、不能用非标端口 2 、不能映射根目录(如 \file.com\ 这种) 3 、只能使用一个账号
网上找了一圈好像都没有解决的办法,问一下大家都是怎么解决这个问题的,或有没有好用的客户端推荐
windows 上暂时未找到合适的支持非标端口和根目录挂载 samba 的第三方软件
非标端口目前最好的方法是使用 apache2/nginx 在服务端进行端口转发(但似乎失去了原本使用非标端口的意义,只对 frp 穿透或 docker 搭建等方法搭建的 smb 有一定的作用),也可以使用代理服务器的方式来访问非标端口(都比较麻烦)。
另辟蹊径的方法是不用 samba,改用 sftp / ftp / nfs / webdav 的方式,这些协议在 windows 上可以很容易地找到第三方挂载软件(如 mikuc 推荐的 RaiDrive ,libook 推荐的 cyberduck、filezilla)
1
passerbytiny 2021-06-02 09:53:33 +08:00 via Android
我觉得你还是先还好研究一下 windows 怎么用,你那几个痛点,貌似是你的痛点,不是 windows 的。
|
2
SSang OP @passerbytiny 我觉得如果你有解决办法,可以说出来,而不是否定我的问题
|
3
passerbytiny 2021-06-02 09:57:35 +08:00 via Android
“此电脑”右击——“添加一个网络位置”,然后一路下一步。
另外,这是社区,不是上级领导评委会,不要用“痛点”这么专业的术语。 |
4
SSang OP @passerbytiny 你可以尝试一下,添加网络位置是否能使用非标端口,是否能使用根目录,是否能使用多个账号。
另外,“痛点”并不是专业术语,同样,这里是社区,不是上级领导评委会,何必纠结与用词规范。 |
5
SSang OP @SSang 我补充一点,使用非标端口和使用根目录,都会提示 “找不到网络位置”.
参考 stackExchange 的问题: https://superuser.com/questions/702948/how-to-mount-a-samba-share-on-non-standard-port 使用多个账号则会提示 “不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接” 微软官方有一个解决办法,但并不完美,特别是重启之后,windows 感觉是会使用默认用户名去连接,导致失败 https://docs.microsoft.com/zh-CN/troubleshoot/windows-server/networking/cannot-connect-to-network-share |
6
fhy1994 2021-06-02 10:34:14 +08:00
这两天我也想问这个问题 真的 win 默认网络磁盘上边不能连接非 445 端口的 samba
|
7
viWww0vvxmolvY5p 2021-06-02 10:38:03 +08:00 via Android
用 webdav 不可以吗?
|
8
SSang OP @mway webdav 似乎也不能解决这个问题,我觉得问题的关键在于 windows 自带的映射网络驱动器这个东西的限制,webdav 映射出来之后从客户端上看应该和 samba 没有什么区别。
且 webdav 有个比较蛋疼的问题,就是他需要给文件赋 www-data 的归属,或者至少 0666 这种权限,但我经常是 linux 上操作的,默认都是 root 的 0644,webdav 就会无权操作,然后我还要再上 linux 上 chown,就比较麻烦。 |
9
SSang OP @fhy1994 是的,不能使用非标端口很奇怪,android / ios / linux 下都可以很轻松地映射非标端口。目前我的解决办法是 用 apache2 或 nginx 根据域名做端口转发。
file1.x.com:445 转到 446,file2.x.com:445 转到 447 这样。但还是比较蛋疼 |
10
Mithril 2021-06-02 11:15:17 +08:00
非标准端口只用过这功能映射 FTP,是没问题的。
|
11
mikuc 2021-06-02 11:24:17 +08:00
RaiDrive
|
12
passerbytiny 2021-06-02 11:28:54 +08:00 via Android
我觉得楼主你在玩人。
我特意去看了下我配置 samba 的笔记,并没有配置端口的部分。不太放心又去 samba 官网找了找,也没有配置端口的相关内容。还不放心,我又去搜索了下 SMB/MS-CIFS 协议内容,发现它的端口是不能自主控制的,受制与它使用的传输层。 |
13
passerbytiny 2021-06-02 11:38:00 +08:00 via Android
About Samba
Samba is the standard Windows interoperability suite of programs for Linux and Unix. —— https://www.samba.org/ 与其它服务端应用不同,Samba 是主动适配 Windows 的,感觉楼主这需求基本不可能实现。 |
14
xmt328 2021-06-02 11:53:57 +08:00 2
|
15
zent00 2021-06-02 12:04:09 +08:00
终于有人跟我遇到同样的问题了,如果没有 Windows 客户端还好,实在要用 Windows 访问的话,感觉用 Apache/Nginx 做转发是目前为止最佳的解决方案了。
另外提一下,十二楼说不能自定义端口,你可以试试在 smb.conf 里添加 "smb ports = xxx" |
16
ly841000 2021-06-02 12:09:23 +08:00
@xmt328 @passerbytiny 没有说错, smb 是逆向移植自 windows, smb 在 windows 上端口就是固定的, 现在要求 windows 使用非标端口就是为难人
|
17
libook 2021-06-02 12:31:24 +08:00 via Android
一直都用的标准配置,所以没遇到相关问题。
Windows 的凭据管理确实很难用,发生过勒索病毒连着 samba 设备一起加密的情况,那之后我就在 Windows 上只挂载只读 samba 设备了,或者用 cyberduck 或 filezilla 连 ftp 或 sftp 。 但 cyberduck 和 filezilla 好像没提供 samba 协议支持,不知道为什么,不过我的 nas 开了多种协议,能用啥就用啥。 |
18
littlecap 2021-06-02 12:34:07 +08:00 via iPhone
sftp 好用
|
19
GrayXu 2021-06-02 13:21:11 +08:00
windows 的网络位置虽然支持 webdav,但其实有不少坑,比如大文件传输啥的。
要么迎合 win 的需求来做,要么就只能第三方挂载的软件 |
20
ragnaroks 2021-06-02 13:41:16 +08:00
遇到过类似的问题,后来我用 NFS 了,win10 、server2019 都内置支持了
|
21
SSang OP @ly841000 @passerbytiny
我知道 samba 是专门服务于 windows 的,其他端只是适配,所以即使是 linux 上配置依然能看到很多 windows 的痕迹,windows 可能一开始就没想过去支持多端口,也没想过 linux 会做出个服务端来,行为逻辑还和自己不一样。 但现实情况是,samba 在 linux 上的服务端确实更强大,且非标端口在暴露公网的情况下也是个很重要的配置 windows 当然没有义务去适配一个别人的东西,我也没指责 windows 没做好适配,毕竟本来就是 linux 自己改的端口。只是当我在其他系统能够使用非标端口,使用根目录映射的时候,自然会认为 windows 系统上理论上是能够实现适配的,所以我才寻求第三方的挂载软件。 所以我的主要需求一直都是询问是否有第三方适配软件,而不是争论这些东西是否合理。 |
22
ysc3839 2021-06-02 15:55:37 +08:00
@ly841000 @passerbytiny @SSang
感觉你们搞混了 SMB 和 Samba 。 Server Message Block (SMB) 是微软开发的一个网络协议。Windows 的文件共享是实现了 SMB 协议的一个软件。 Samba 也是实现了 SMB 协议的一个软件,设计在类 Unix 操作系统上运行。 还有个 ksmbd (也称作 cifsd) 是实现了 SMB 协议服务端的软件,设计在 Linux 内核中运行。 |
23
mingl0280 2021-06-02 22:28:41 +08:00 via Android
@SSang 没有,别想了。Windows 共享是事实标准,任何不符合这个事实标准的都是非标准操作。人家也没想着这东西能给你挂载非标准端口。
|
24
jeeyong 2021-06-03 01:45:49 +08:00
@mikuc #11 RaiDrive+1, 不过貌似速度会有影响..
同时对比过 rclone, rclone 好像会更快, 速度更稳定一些.. |
25
raiz 2021-06-03 10:33:43 +08:00
借楼问一下,怎么 windows 软件,比如某盘,某 ps,是怎么实现在我的电脑那里显示一个虚拟的驱动器,并且某 ps 点双击进去还能嵌入页面到 文件管理器。
|
26
jasonyang9 2021-06-03 17:04:30 +08:00
很久以前研究安卓客户端的时候找到的: https://tubecast.webrox.fr/landrive/portmapping.html
V2EX 帖子: https://www.v2ex.com/t/580186 |
28
SSang OP @jeeyong 我试了一下,rclone 体感确实更快一点,raildrive 连接建立的很慢不知道是什么原因,我现在改用 sshfs 了,相当于插件的方式,好处是可以同样使用 windows 的映射网络驱动器的方式去挂非标端口,也不用去写什么开机启动的脚本了,使用起来感觉上就和 smb 一样。
|
29
SSang OP @jasonyang9 谢谢,虽然是安卓的,不过给了我一个思路,其实在 windows 上装 nginx 就好了啊,我之前思路还一直局限与服务端,在 windows 上直接做端口转发然后用标准端口去连接非标端口的服务器就好了,一直都没想到。
|
30
jasonyang9 2021-06-10 15:37:24 +08:00 via Android
@SSang 棒,很好的点子
|
32
martint028 2023-03-10 11:57:12 +08:00 1
@justaname 借思路用 GPT 解决了:
您可以使用 Netsh 命令的 Portproxy 模式来配置 Windows 中的端口转发 (woshub.com) (woshub.com) (bobcares.com)。要把 SMB 的 445 端口转换成其他端口 45454 ,您可以在管理员权限下打开命令提示符,然后运行以下命令: netsh interface portproxy add v4tov4 listenport=45454 listenaddress=本地地址 connectport=445 connectaddress=SMB 服务器地址 其中,本地地址是您当前运行端口转发的计算机的 IP 地址,SMB 服务器地址是您要访问的 SMB 服务器的 IP 地址 (woshub.com) (woshub.com) (bobcares.com)。例如,如果您当前计算机的 IP 地址是 10.10.1.110 ,而 SMB 服务器的 IP 地址是 10.10.1.120 ,那么您可以运行以下命令: netsh interface portproxy add v4tov4 listenport=45454 listenaddress=10.10.1.110 connectport=445 connectaddress=10.10.1.120 这样,当您访问本地计算机上的 45454 端口时,就相当于访问了 SMB 服务器上的 445 端口 (serverfault.com)。 |
33
xiaguoxin 2023-08-23 14:42:44 +08:00
虽然很久了。找了一个方法,正在尝试。https://www.bilibili.com/read/cv10636456/
|