生产环境无法登陆SFTP报connection closed的一次排查经历

事故背景

生产环境的某项目上访问SFTP服务时出现异常,导致无法访问。

com.jcraft.jsch.JSchException: java.io.IOException: Pipe closed
        at com.jcraft.jsch.ChannelSftp.start(ChannelSftp.java:315)
        at com.jcraft.jsch.Channel.connect(Channel.java:152)
        at com.jcraft.jsch.Channel.connect(Channel.java:145)
        at com.firefly.xxxxx.module.isoc.util.SFtpOperatorImpl.getConnectAndChannel(SFtpOperatorImpl.java:54)
        at com.firefly.xxxxx.module.isoc.util.SFtpOperatorImpl.getConnectAndChannel(SFtpOperatorImpl.java:41)
        at com.firefly.xxxxx.module.isoc.util.SFtpOperatorImpl.<init>(SFtpOperatorImpl.java:34)
        at com.firefly.xxxxx.module.isoc.service.gd.AssetFileService.analysisFTPFile(AssetFileService.java:182)
        at com.firefly.venus.module.isoc.service.gd.AssetFileService$$FastClassBySpringCGLIB$$d5abc9e4.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)
        at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)

事故分析

1、于是,我登陆生产设备上通过手工访问sftp

sftp 帐号@设备IP

输入密码后出现Connection closed.
2、思考一番,既然能够输入密码,那说明sftp服务是可用的。这个时候,我能够想到的是重启一下ssh服务,看看能不能恢复过来。(注:设备系统是centos6.5)

service sshd restart

如果是centos7的话,则使用

systemctl restart sshd.service

3、但是结果还是悲剧的,这个时候又在想,既然网络ping通,telnet 22端口也是通,那会是什么问题导致的?因为这个线上的sftp服务一直在使用,用了将近2-3个月了。想到2-3个月的时候,突然想一下会不会这个sftp帐号自身的问题导致的?难道是密码过期?
4、于是,我通过命令:

chage -l sftp帐号(XXXXXXX)

如下图所示,原来当前sftp帐号的密码早在2020年9月16号过期了。
在这里插入图片描述

解决方案

1、既然是帐号密码过期了,但是这个密码已跟多个厂家协商好的,所以万万不能擅自修改密码,于是,把密码的过期期限暂定修改为never,操作如下。

chage -M 99999 sftp帐号(XXXXXX)

于是,再一次输入命令 :

chage -l sftp帐号(XXXXXXX)

如下图所示:
在这里插入图片描述
现在重新使用当前帐号访问sftp,连接成功。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值