[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地址,username
和password
替换为有效的用户名和密码。
如果你成功地列出了服务器上的共享,那么SMB服务就被认为是工作的。你也可以尝试访问一个具体的共享:
smbclient //SERVER_IP/sharename -U username%password
将sharename
替换为你想要访问的共享名称。
如果你能成功地进入smbclient提示符,那么你就成功地通过SMB协议连接到了远程资源。
验证截图:
通过用户名和密码是可以登录的
后来感觉smb可能是一个小众的协议,应该可能有漏洞,是不是支持密码有特殊字符呢,看下面截图,瞬间心里就有底了
不巧的是,我们的smb密码里面确实含有@字符;
总结:
1,首先分析问题的思路也是对的,至少从网络方面分析,iptables,端口,这些是常规的问题处理方式
2,需要加强对tcpdump方式的验证;后来验证了,tcpdump,感觉没有抓到对应的连接信息,估计是已经建立连接过了
欢迎关注我个人微信
标签:jcifs,server,Failed,SmbFile,connect,smb From: https://www.cnblogs.com/alonewaiting/p/18132582