V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SSang
V2EX  ›  Windows

有没有 Windows 下好用的 samba 客户端/浏览器

  •  1
     
  •   SSang · 2021-06-02 09:35:36 +08:00 · 13822 次点击
    这是一个创建于 1267 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Windows 自带的有几个痛点: 1 、不能用非标端口 2 、不能映射根目录(如 \file.com\ 这种) 3 、只能使用一个账号

    网上找了一圈好像都没有解决的办法,问一下大家都是怎么解决这个问题的,或有没有好用的客户端推荐

    第 1 条附言  ·  2021-06-02 10:21:04 +08:00
    补充说明:

    这里说的问题是使用 “映射网络驱动器” 这种方式,而不是直接在地址栏输入域名的方式,因为我希望的是他能成为一个网络位置而不是快捷方式。

    使用非标端口和使用根目录,都会提示 “找不到网络位置”.

    参考 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
    第 2 条附言  ·  2021-06-02 15:42:19 +08:00

    2021-06-02 总结

    1. windows 上暂时未找到合适的支持非标端口和根目录挂载 samba 的第三方软件

    2. 非标端口目前最好的方法是使用 apache2/nginx 在服务端进行端口转发(但似乎失去了原本使用非标端口的意义,只对 frp 穿透或 docker 搭建等方法搭建的 smb 有一定的作用),也可以使用代理服务器的方式来访问非标端口(都比较麻烦)。

    3. 另辟蹊径的方法是不用 samba,改用 sftp / ftp / nfs / webdav 的方式,这些协议在 windows 上可以很容易地找到第三方挂载软件(如 mikuc 推荐的 RaiDrive ,libook 推荐的 cyberduck、filezilla)

    33 条回复    2023-08-23 14:42:44 +08:00
    passerbytiny
        1
    passerbytiny  
       2021-06-02 09:53:33 +08:00 via Android
    我觉得你还是先还好研究一下 windows 怎么用,你那几个痛点,貌似是你的痛点,不是 windows 的。
    SSang
        2
    SSang  
    OP
       2021-06-02 09:57:30 +08:00
    @passerbytiny 我觉得如果你有解决办法,可以说出来,而不是否定我的问题
    passerbytiny
        3
    passerbytiny  
       2021-06-02 09:57:35 +08:00 via Android
    “此电脑”右击——“添加一个网络位置”,然后一路下一步。

    另外,这是社区,不是上级领导评委会,不要用“痛点”这么专业的术语。
    SSang
        4
    SSang  
    OP
       2021-06-02 10:06:18 +08:00
    @passerbytiny 你可以尝试一下,添加网络位置是否能使用非标端口,是否能使用根目录,是否能使用多个账号。

    另外,“痛点”并不是专业术语,同样,这里是社区,不是上级领导评委会,何必纠结与用词规范。
    SSang
        5
    SSang  
    OP
       2021-06-02 10:15:22 +08:00
    @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
    fhy1994
        6
    fhy1994  
       2021-06-02 10:34:14 +08:00
    这两天我也想问这个问题 真的 win 默认网络磁盘上边不能连接非 445 端口的 samba
    viWww0vvxmolvY5p
        7
    viWww0vvxmolvY5p  
       2021-06-02 10:38:03 +08:00 via Android
    用 webdav 不可以吗?
    SSang
        8
    SSang  
    OP
       2021-06-02 11:09:13 +08:00
    @mway webdav 似乎也不能解决这个问题,我觉得问题的关键在于 windows 自带的映射网络驱动器这个东西的限制,webdav 映射出来之后从客户端上看应该和 samba 没有什么区别。

    且 webdav 有个比较蛋疼的问题,就是他需要给文件赋 www-data 的归属,或者至少 0666 这种权限,但我经常是 linux 上操作的,默认都是 root 的 0644,webdav 就会无权操作,然后我还要再上 linux 上 chown,就比较麻烦。
    SSang
        9
    SSang  
    OP
       2021-06-02 11:13:27 +08:00
    @fhy1994 是的,不能使用非标端口很奇怪,android / ios / linux 下都可以很轻松地映射非标端口。目前我的解决办法是 用 apache2 或 nginx 根据域名做端口转发。

    file1.x.com:445 转到 446,file2.x.com:445 转到 447 这样。但还是比较蛋疼
    Mithril
        10
    Mithril  
       2021-06-02 11:15:17 +08:00
    非标准端口只用过这功能映射 FTP,是没问题的。
    mikuc
        11
    mikuc  
       2021-06-02 11:24:17 +08:00
    RaiDrive
    passerbytiny
        12
    passerbytiny  
       2021-06-02 11:28:54 +08:00 via Android
    我觉得楼主你在玩人。

    我特意去看了下我配置 samba 的笔记,并没有配置端口的部分。不太放心又去 samba 官网找了找,也没有配置端口的相关内容。还不放心,我又去搜索了下 SMB/MS-CIFS 协议内容,发现它的端口是不能自主控制的,受制与它使用的传输层。
    passerbytiny
        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 的,感觉楼主这需求基本不可能实现。
    xmt328
        14
    xmt328  
       2021-06-02 11:53:57 +08:00   ❤️ 2
    @passerbytiny 我觉得楼主的需求很正常,你不用上来就阴阳怪气,没有解决方案你可以不说话

    我曾经也遇到过后面干脆规避不用 smb 了
    顺便吐槽下 windows 的凭据系统,难用
    zent00
        15
    zent00  
       2021-06-02 12:04:09 +08:00
    终于有人跟我遇到同样的问题了,如果没有 Windows 客户端还好,实在要用 Windows 访问的话,感觉用 Apache/Nginx 做转发是目前为止最佳的解决方案了。

    另外提一下,十二楼说不能自定义端口,你可以试试在 smb.conf 里添加 "smb ports = xxx"
    ly841000
        16
    ly841000  
       2021-06-02 12:09:23 +08:00
    @xmt328 @passerbytiny 没有说错, smb 是逆向移植自 windows, smb 在 windows 上端口就是固定的, 现在要求 windows 使用非标端口就是为难人
    libook
        17
    libook  
       2021-06-02 12:31:24 +08:00 via Android
    一直都用的标准配置,所以没遇到相关问题。

    Windows 的凭据管理确实很难用,发生过勒索病毒连着 samba 设备一起加密的情况,那之后我就在 Windows 上只挂载只读 samba 设备了,或者用 cyberduck 或 filezilla 连 ftp 或 sftp 。

    但 cyberduck 和 filezilla 好像没提供 samba 协议支持,不知道为什么,不过我的 nas 开了多种协议,能用啥就用啥。
    littlecap
        18
    littlecap  
       2021-06-02 12:34:07 +08:00 via iPhone
    sftp 好用
    GrayXu
        19
    GrayXu  
       2021-06-02 13:21:11 +08:00
    windows 的网络位置虽然支持 webdav,但其实有不少坑,比如大文件传输啥的。

    要么迎合 win 的需求来做,要么就只能第三方挂载的软件
    ragnaroks
        20
    ragnaroks  
       2021-06-02 13:41:16 +08:00
    遇到过类似的问题,后来我用 NFS 了,win10 、server2019 都内置支持了
    SSang
        21
    SSang  
    OP
       2021-06-02 14:03:39 +08:00
    @ly841000 @passerbytiny

    我知道 samba 是专门服务于 windows 的,其他端只是适配,所以即使是 linux 上配置依然能看到很多 windows 的痕迹,windows 可能一开始就没想过去支持多端口,也没想过 linux 会做出个服务端来,行为逻辑还和自己不一样。

    但现实情况是,samba 在 linux 上的服务端确实更强大,且非标端口在暴露公网的情况下也是个很重要的配置

    windows 当然没有义务去适配一个别人的东西,我也没指责 windows 没做好适配,毕竟本来就是 linux 自己改的端口。只是当我在其他系统能够使用非标端口,使用根目录映射的时候,自然会认为 windows 系统上理论上是能够实现适配的,所以我才寻求第三方的挂载软件。

    所以我的主要需求一直都是询问是否有第三方适配软件,而不是争论这些东西是否合理。
    ysc3839
        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 内核中运行。
    mingl0280
        23
    mingl0280  
       2021-06-02 22:28:41 +08:00 via Android
    @SSang 没有,别想了。Windows 共享是事实标准,任何不符合这个事实标准的都是非标准操作。人家也没想着这东西能给你挂载非标准端口。
    jeeyong
        24
    jeeyong  
       2021-06-03 01:45:49 +08:00
    @mikuc #11 RaiDrive+1, 不过貌似速度会有影响..
    同时对比过 rclone, rclone 好像会更快, 速度更稳定一些..
    raiz
        25
    raiz  
       2021-06-03 10:33:43 +08:00
    借楼问一下,怎么 windows 软件,比如某盘,某 ps,是怎么实现在我的电脑那里显示一个虚拟的驱动器,并且某 ps 点双击进去还能嵌入页面到 文件管理器。
    jasonyang9
        26
    jasonyang9  
       2021-06-03 17:04:30 +08:00
    很久以前研究安卓客户端的时候找到的: https://tubecast.webrox.fr/landrive/portmapping.html

    V2EX 帖子: https://www.v2ex.com/t/580186
    SSang
        27
    SSang  
    OP
       2021-06-10 09:58:18 +08:00
    @mingl0280 我也没想着这玩意能给我挂非标端口
    SSang
        28
    SSang  
    OP
       2021-06-10 10:10:03 +08:00
    @jeeyong 我试了一下,rclone 体感确实更快一点,raildrive 连接建立的很慢不知道是什么原因,我现在改用 sshfs 了,相当于插件的方式,好处是可以同样使用 windows 的映射网络驱动器的方式去挂非标端口,也不用去写什么开机启动的脚本了,使用起来感觉上就和 smb 一样。
    SSang
        29
    SSang  
    OP
       2021-06-10 10:13:42 +08:00   ❤️ 1
    @jasonyang9 谢谢,虽然是安卓的,不过给了我一个思路,其实在 windows 上装 nginx 就好了啊,我之前思路还一直局限与服务端,在 windows 上直接做端口转发然后用标准端口去连接非标端口的服务器就好了,一直都没想到。
    jasonyang9
        30
    jasonyang9  
       2021-06-10 15:37:24 +08:00 via Android
    @SSang 棒,很好的点子
    justaname
        31
    justaname  
       2021-10-26 15:16:56 +08:00
    @SSang 都不需要 nginx ,只用 netsh 写一行端口转发就行了呀
    martint028
        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)。
    xiaguoxin
        33
    xiaguoxin  
       2023-08-23 14:42:44 +08:00
    虽然很久了。找了一个方法,正在尝试。https://www.bilibili.com/read/cv10636456/
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5137 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:32 · PVG 17:32 · LAX 01:32 · JFK 04:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.