我正在运行一个java程序,我使用Java SFTP将文件从一个文件夹传输到另一个文件夹.我遇到的问题是我在Java SFTP中遇到以下错误(使用JSch):
C:\ Oracle\Middleware\Oracle_Home\oracle_common\jdk\bin\javaw.exe -server -classpath C:\ JDeveloper\mywork\Java_Hello_World.adf; C:\ JDeveloper\mywork\Java_Hello_World\Client\classes; C:\ Users\ADMIN\Downloads\jsch-0.1.53.jar -Djavax.net.ssl.trustStore = C:\ Users\IBM_AD~1\AppData\Local\Temp\trustStore5840796204189742395.jks FileTransfer com.jcraft.jsch.JSchException:UnknownHostKey: 127.0.0.1.RSA密钥指纹是a2:39:3f:44:88:e9:1f:d7:d1:71:f4:85:98:fb:90:dc at com.jcraft.jsch.Session.checkHost(Session.java: 797)at com.jcraft.jsch.Session.connect(Session.java:342)at com.jcraft.jsch.Session.connect(Session.java:183)at FileTransfer.main(FileTransfer.java:33)进程退出时退出代码0.
以下是我目前的代码:
FileTransfer fileTransfer = new FileTransfer();
JSch jsch = new JSch();
try {
String host = "127.0.0.1";
int port = 22;
String user = "user";
Session session = jsch.getSession(user, host, port);
session = jsch.getSession("username", "127.0.0.1", 22);
session.connect(); // bug here , java.net.ConnectException
ChannelSftp sftp = null;
sftp = (ChannelSftp)session.openChannel("sftp") ; //channel;
//extra config code …Run Code Online (Sandbox Code Playgroud) 代码似乎打破了session.connect.
com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪
com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
at com.jcraft.jsch.Session.connect(Session.java:534)
at com.jcraft.jsch.Session.connect(Session.java:162)
at session.connect in uploadFile(ftpService.java:280)
Run Code Online (Sandbox Code Playgroud)
码
try {
JSch jsch = new JSch();
Session session = null;
session = jsch.getSession(ftpUserName, ftpServer, 22);
session.setClientVersion("StrictHostKeyChecking");
//session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(ftpPassword);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
//sftpChannel.get("remotefile.txt", "localfile.txt");
String path="C:\\srcFolder";
String remotePath="C:\\destFolder";
try {
sftpChannel.put(new FileInputStream(new File(path)), remotePath );
} catch (FileNotFoundException e) {
// TODO …Run Code Online (Sandbox Code Playgroud) 我正在使用Apache VFS 2.1with JSch 0.1.54(今天的最新版本)来使用SFTP上传文件。
连接时系统抛出“End of IO Stream Read”,完整的堆栈为:
Caused by: com.jcraft.jsch.JSchException: Session.connect: java.io.IOException: End of IO Stream Read
at com.jcraft.jsch.Session.connect(Session.java:565)
at com.jcraft.jsch.Session.connect(Session.java:183)
at org.apache.commons.vfs2.provider.sftp.SftpClientFactory.createConnection(SftpClientFactory.java:166)
Run Code Online (Sandbox Code Playgroud)
我在这个线程中找到了解决我的问题的可能解决方案,但它直接与 JSch 一起操作。由于我使用的是 Apache VFS,我无法Session直接访问(至少我认为我不能)。
但如果可以的话,它会是这样的:
session.setConfig("kex", "diffie-hellman-group1-sha1");
Run Code Online (Sandbox Code Playgroud)
查看 Apache VFS 实现,org.apache.commons.vfs2.provider.sftp.SftpClientFactory没有找到设置此属性的方法。
如何使用 Apache VFS API 设置此配置?
日志数据:
session.setConfig("kex", "diffie-hellman-group1-sha1");
Run Code Online (Sandbox Code Playgroud)