开发者社区> 问答> 正文

SFTP报错:com.jcraft.jsch.JSchException: se?报错

在linux配置了sftp用户,用于上传文件,配置好编写程序测试可以成功上传,年后回来发现以前好好的程序就报错了,具体错误如下:

com.jcraft.jsch.JSchException: session is down
at com.jcraft.jsch.Channel.connect(Channel.java:185)
at com.jcraft.jsch.Channel.connect(Channel.java:144)
at com.syscomm.common.SFtpUploadHelper.connect(SFtpUploadHelper.java:54)
at com.syscomm.common.SFtpUploadHelper.main(SFtpUploadHelper.java:76)

源码:
 public boolean connect()
    {
        try
        {
            if (sshSession == null || !sshSession.isConnected())
            {
                JSch jsch = new JSch();
                sshSession = jsch.getSession(username, host, port);
                sshSession.setPassword(password);
                Properties sshConfig = new Properties();
                sshConfig.put("StrictHostKeyChecking", "no");
                sshSession.setConfig(sshConfig);
                sshSession.connect();
                Channel channel = sshSession.openChannel("sftp");
                channel.connect();
                sftp = (ChannelSftp) channel;
                logger.info("Connected to " + host + ".");
                return true;
            }


        }
        catch (Exception e)
        {
            logger.error("get sftp connection error...", e);
            return false;
        }
        return true;
    }
在标记那出错,已经确认服务器配置没有问题,执行sshSession.connect();完毕后,再看sshSession.isConnected()的返回值就是false了,我很奇怪,为什么刚connect就失去连接了?以前是没有问题的,今天突然发现连不上的,网上没有相关技术文档,有哪位遇到过这种问题吗?服务器端重新启动sshd也不行。

展开
收起
爱吃鱼的程序员 2020-06-22 13:05:50 1707 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    没有一个人懂吗?哎!~~这问题真蛋疼啊在线等大神!!!!!!!!!!!疯了要补充一下,因为安装了oracle管理员,所以多了一个oracle用户,以前没有这个用户上传都没有问题,是不是因为这个原因导致的?[root<aclass='referer'target='_blank'>@localhost~]#sftplogSftp<aclass='referer'target='_blank'>@localhost
    Connectingtolocalhost...
    logSftp<aclass='referer'target='_blank'>@localhost'spassword: 
    Writefailed:Brokenpipe

    Couldn'treadpacket:Connectionresetbypeer

    另外在linux上用命令测试了一下,果然不行,求高手

    在另一台机器上用相同配置安装了一个sftp用户

    测试可以使用:

    [root@BaseUser~]#sftplogsftp<aclass='referer'target='_blank'>@localhost
    Connectingtolocalhost...
    logsftp<aclass='referer'target='_blank'>@localhost'spassword: 
    sftp>bye
    [root@BaseUser~]# 

    找到原因了,汗死了,原来是<spanstyle="color:#333333;font-family:arial;font-size:14px;line-height:25px;background-color:#FFFFFF;">ChrootDirectory权限问题

    <spanstyle="line-height:1.5;font-size:10pt;">我设置的路径是ChrootDirectory/home/sftp<spanstyle="line-height:1.5;font-size:10pt;">

    <spanstyle="line-height:1.5;font-size:10pt;">错误的权限如下:

    drwxr-xr-x.3root  root   40962月 1111:00apps
    drwx------.4logSftpsftp-user 40962月 1115:23logSftp
    drwx------.2root  root   1638412月202012lost+found
    drwxrwxr-x.5oracle oinstall 40962月 1014:21oracle
    <spanstyle="background-color:#E56600;">drwxrwxrwx.3root  sftp-user 40961月 2515:50sftp
    drwxr-xr-x.3root  root   40962月 817:06softs

    sftp要求必须是750或者是755,不能设置成777,正确的如下

    drwxr-xr-x.3root  root   40962月 1111:00apps
    drwx------.4logSftpsftp-user 40962月 1115:23logSftp
    drwx------.2root  root   1638412月202012lost+found
    drwxrwxr-x.5oracle oinstall 40962月 1014:21oracle
    <spanstyle="background-color:#E56600;">drwxr-xr-x.3root  sftp-user 40961月 2515:50sftp
    drwxr-xr-x.3root  root   40962月 817:06softs
    此问题跟oracle没有关系,问题完美解决!特地将结果发出来,防止后人走弯路,这个问题搞了快一天了

    楼主好人,赞一个...

    mark

    2020-06-22 13:06:08
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载