我有下面的代碼,SFTP,才能SFTP錯誤:com.jcraft.jsch.JSchException:無效的服務器的版本字符串
public static void putFile(String username, String host, String password, String remotefile, String localfile){
JSch jsch = new JSch();
Session session = null;
try {
session = jsch.getSession(username, host, 22);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.put(localfile, remotefile);
sftpChannel.exit();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
}
我能夠從使用上面的代碼我的本地機器SFTP文檔中的位置。但是,當我從一個不同的環境嘗試到SFTP到相同的位置時,我收到跟隨錯誤。
com.jcraft.jsch.JSchException:無效的服務器的版本字符串在
com.jcraft.jsch.Session.connect(Session.java:253)
注:我使用jsch-0.1.31.jar文件。
打印出來session.getClientVersion()
我得到「SSH-2.0-JSCH-0.1.31」。
我試圖把jar文件升級到jsch-0.1.51.jar然後session.getClientVersion()
= 「SSH-1.5-JSCH-0.1.51」,我收到以下錯誤
com.jcraft.jsch.JSchException:Session.connect:java.net.SocketException異常:連接在com.jcraft.jsch.Session.connect(Session.java:558)重置
請你能幫助我我應該選擇什麼參數是否正在研究和什麼導致它從我的本地計算機運行並上傳到同一個SFTP位置,而不是從其他環境?
的連接您的問題在於你要連接的ssh服務器。首先它發送了Jsch不喜歡的服務器版本,現在它正在關閉客戶端所建立的TCP連接。服務器上運行什麼操作系統?它運行什麼SSH服務器軟件?這個服務器軟件是什麼版本? – Kenster 2014-09-03 15:40:49
您是否能夠在無法從「不同環境」連接的同時從本地機器進行連接? 「不同的環境」究竟意味着什麼?不同的位置?包含一些日誌文件,例如使用任何GUI SFTP客戶端。服務器的日誌也會有所幫助,至少可以看到來自「不同環境」的連接嘗試是否到達服務器。 – 2014-09-04 06:13:04