当我尝试与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()
}
我得到了问题...实际上,jsch不是FTP客户端,它是SSH客户端(随附的SFTP实现(。我正在连接的FTP服务器不是SSH服务器。这就是为什么JSCH无法与该FTP服务器连接的原因。我已经使用了Apache Commons FTP客户端及其工作正常