smb传输报错:Failed to connect to server jcifs.smb.SmbException: Failed to connect to server

[2024-04-12 11:33:51.868] [dfe7d0ec-0600-4e36-9ee0-b551c4c035e0] [ERROR] [http-nio-8088-exec-4] [c.w.c.f.g.s.u.JCifsUtil:getRemoteFile:119] Failed to connect to server jcifs.smb.SmbException: Failed to connect to server
        at jcifs.smb.SmbFile.connect0(SmbFile.java:882)
        at jcifs.smb.SmbFile.doNetServerEnum(SmbFile.java:1914)
        at jcifs.smb.SmbFile.doEnum(SmbFile.java:1734)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1715)
        at jcifs.smb.SmbFile.listFiles(SmbFile.java:1648)
        at com.abc.nanjing.gateway.service.util.JCifsUtil.getRemoteFile(JCifsUtil.java:112)

首先看报错,第一时间猜测是网络问题,加上之前服务器上有iptables规则,所以第一时间加上了规则,但仍然不行

所以一直在猜测是网络问题,检查端口,ip,这些都检查了没问题。最后问了下百度

然后最直接的方法有两种,一种是直接在服务器上安装smb客户端,通过用户名和密码登录验证连接信息是不是正常

一种是通过tcpdump看看请求的连接信息是不是对的;第二种不太确定能不能抓到包

第一种:安装smb客户端

yum install –y samba samba-client samba-winbind-clients.x86_64 cifs-utils.x86_64

然后,使用smbclient尝试列出或连接到SMB服务器上的共享资源。以下是一个简单的命令行示例:

smbclient -L //SERVER_IP -U username%password

SERVER_IP替换为你要连接的服务器的IP地址,usernamepassword替换为有效的用户名和密码。

如果你成功地列出了服务器上的共享,那么SMB服务就被认为是工作的。你也可以尝试访问一个具体的共享:

smbclient //SERVER_IP/sharename -U username%password

sharename替换为你想要访问的共享名称。

如果你能成功地进入smbclient提示符,那么你就成功地通过SMB协议连接到了远程资源。

验证截图:

 通过用户名和密码是可以登录的

后来感觉smb可能是一个小众的协议,应该可能有漏洞,是不是支持密码有特殊字符呢,看下面截图,瞬间心里就有底了

 

不巧的是,我们的smb密码里面确实含有@字符;

总结:

1,首先分析问题的思路也是对的,至少从网络方面分析,iptables,端口,这些是常规的问题处理方式

2,需要加强对tcpdump方式的验证;后来验证了,tcpdump,感觉没有抓到对应的连接信息,估计是已经建立连接过了

欢迎关注我个人微信

 

posted @ 2024-04-13 10:49  春江潮水连海平  阅读(294)  评论(0编辑  收藏  举报