在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也不行。
没有一个人懂吗?哎!~~这问题真蛋疼啊在线等大神!!!!!!!!!!!疯了要补充一下,因为安装了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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。