添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

生产环境SFTP服务器连通的网络问题调查

背景

我们系统的生产环境地址是对公网不公开的,但为了和公网的其他系统交互,需要网络的同事建立网络策略。

问题1

一个公网系统开通了访问我系统sftp服务器的网络策略,已联通。但,一天,突然对端系统无法通过sftp方式访问我系统。

程序的报错为:

SFTP链接异常...............------------
Connect:Session.connect: System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。

问题1调查经过

  1. 单从程序报错来看,像是我方sftp服务器阻止了远程的连接。
  2. 接下来,确认对端系统的代码中配置的sftp用户名、密码没有错误。
  3. 使用命令 telnet sftp服务器IP sftp端口,确认网络是通的。此命令不论是linux、windows都可以使用。如果网络通,会进入telnet连接页面。如果不通,会提示“.... 连接失败”。

3. 抓包确认

windows系统,使用Wireshark工具;Linux系统使用tcpdump命令(需要root权限执行)

在执行sftp连接前,对端服务器和我方机器先执行抓包命令(工具),然后,执行sftp连接。

最后,确认网络没有问题。

4. 对端服务器切换另一台服务器后,访问我方sftp服务器,连接成功。证明我方sftp服务器没有问题。问题出在对端的第一台服务器上。

5. 对端的服务器管理员检查后,发出他们服务器在出口有安全的策略,禁止了一些远程协议。而此安全策略有时会误判。对端的服务器修改出口的安全策略后,问题解决。

问题2

网络策略已开通,对端系统也可以登录SFTP服务器。某一天,对端系统反馈他们无法登录了。

问题2调查经过

我方和对端都检查了网络策略没有发生过变化,sftp连接数也没有超限。于是,要求对端检查代码中配置中的用户/密码或其他配置是否修改完。

对端最终检查出,由于修改其他问题时,不小心修改了sftp依赖包的版本,导致问题发生。

恢复sftp依赖包的版本后,问题解决。

总结:SFTP无法连接时的调查方向

  1. 用户名、密码是否正确输入
  2. 双方的网络是否打通
  3. 双方的网络策略、安全策略是否发生过变更
  4. sftp的连接数是否超限
  5. sftp依赖包的版本是否发生过变化
编辑于 2021-04-14 11:31

文章被以下专栏收录