SFTP报错:com.jcraft.jsch.JSchException: session is down

李学广 发布于 2014/02/11 13:45
阅读 24K+
收藏 0

在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也不行。

加载中
0
李学广
没有一个人懂吗?哎!~~这问题真蛋疼啊
0
李学广
在线等大神!!!!!!!!!!!疯了要
0
李学广
补充一下,因为安装了oracle管理员,所以多了一个oracle用户,以前没有这个用户上传都没有问题,是不是因为这个原因导致的?
0
李学广
[root@localhost ~]# sftp logSftp@localhost
Connecting to localhost...
logSftp@localhost 's password: 
Write failed: Broken pipe

Couldn't read packet: Connection reset by peer

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

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

测试可以使用:

[root@BaseUser ~]# sftp logsftp@localhost
Connecting to localhost...
logsftp@localhost 's password: 
sftp> bye
[root@BaseUser ~]# 

0
李学广

找到原因了,汗死了,原来是ChrootDirectory权限问题

我设置的路径是 ChrootDirectory /home/sftp

错误的权限如下:

drwxr-xr-x. 3 root    root       4096 2月  11 11:00 apps
drwx------. 4 logSftp sftp-user  4096 2月  11 15:23 logSftp
drwx------. 2 root    root      16384 12月 20 2012 lost+found
drwxrwxr-x. 5 oracle  oinstall   4096 2月  10 14:21 oracle
drwxrwxrwx. 3 root    sftp-user  4096 1月  25 15:50 sftp
drwxr-xr-x. 3 root    root       4096 2月   8 17:06 softs

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

drwxr-xr-x. 3 root    root       4096 2月  11 11:00 apps
drwx------. 4 logSftp sftp-user  4096 2月  11 15:23 logSftp
drwx------. 2 root    root      16384 12月 20 2012 lost+found
drwxrwxr-x. 5 oracle  oinstall   4096 2月  10 14:21 oracle
drwxr-xr-x. 3 root    sftp-user  4096 1月  25 15:50 sftp
drwxr-xr-x. 3 root    root       4096 2月   8 17:06 softs
此问题跟oracle没有关系,问题完美解决!特地将结果发出来,防止后人走弯路,这个问题搞了快一天了

0
叶落花开
叶落花开
楼主好人,赞一个...
返回顶部
顶部