通过jsch调用ftp服务器时获取异常“会话已关闭”

时间:2017-06-05 20:05:21

标签: java groovy jsch

当我尝试连接ftp服务器进行文件上传时,我遇到异常com.jcraft.jsch.JSchException: session is down

代码是groovy:

String SFTPHOST = "########"
int SFTPPORT = 22
String SFTPUSER = "########"
String SFTPPASS = "########"
String SFTPWORKINGDIR = "/QA/"
ChannelSftp sftp = null
Session session = null

try {
    JSch jsch = new JSch()
    session = jsch.getSession(SFTPUSER, SFTPHOST, SFTPPORT)
    session.setPassword(SFTPPASS)
    session.setConfig("StrictHostKeyChecking", "no")
    session.setConfig("PreferredAuthentications",
            "publickey,keyboard-interactive,password")

    session.connect()
    Channel channel = session.openChannel "sftp"
    channel.connect()
    sftp = channel as ChannelSftp
    sftp.cd SFTPWORKINGDIR
    File f = new File("Demo.csv")
    sftp.put(new FileInputStream(f), f.getName())
    //def fileList = sftp.ls("*")
    println fileList.size()
} catch (Exception ex) {
    ex.printStackTrace()

}

1 个答案:

答案 0 :(得分:0)

我遇到了问题......实际上JSch不是FTP客户端,它是一个SSH客户端(包含SFTP实现)。我连接的ftp服务器不是ssh服务器。这就是为什么jsch无法与该ftp服务器连接的原因。我已经使用了apache commons ftp client并且工作正常