我支持遗留Web应用程序,其中一个功能是使用JSCH将SFTP附加到另一台服务器。我们的服务器操作团队最近在DSA密钥的基础上向目标服务器添加了一个新的RSA密钥,现在我们正在接收com.jcraft.jsch.JSchException:Auth fail错误消息。这是代码:
public final static void sftpFileToRemoteDirectory(
String clientConnect,
int clientPort,
String clientLogin,
String encryptedPassword,
String path,
String remoteFile,
byte[] file)
throws Exception
{
JSch jsch = new JSch();
Session session = null;
ByteArrayInputStream baInputStream = null;
try {
//using port 24
session = jsch.getSession(clientLogin, clientConnect, clientPort);
session.setConfig("StrictHostKeyChecking", "no");
// Decrypt password string and set password
String saPwd = new EncryptionHelper().decryptString(encryptedPassword);
session.setPassword(saPwd);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel = (ChannelSftp)channel;
System.out.println("Changing to FTP remote dir: " +
path);
sftpChannel.cd(path);
//get ByteArrayInputStream for file
byte b[] = file;
baInputStream = new ByteArrayInputStream(b);
//Put file on server
System.out.println("Moving " + remoteFile + " to " + path);
sftpChannel.put(baInputStream, remoteFile);
sftpChannel.exit();
} finally {
try {
baInputStream.close();
if (session != null) {
session.disconnect();
}
} catch (Exception e) {
// Don't throw exception caused by closing stream
e.printStackTrace();
}
}
}
我找到了this post that seemed related。我们仔细检查并确保目标服务器位于已知主机列表中。这仅包括服务器名称,FQDN和FQDN加上端口号,但没有运气。我可以对代码做出哪些更改?
错误消息:
20:40:37,639 ERROR [stderr](ajp - 127.0.0.1-8009-20)引起:com.jcraft.jsch.JSchException:Auth fail
20:40:37,639错误[stderr](ajp - 127.0.0.1-8009-20)at com.jcraft.jsch.Session.connect(Session.java:461)
20:40:37,639错误[stderr](ajp - 127.0.0.1-8009-20)at com.jcraft.jsch.Session.connect(Session.java:154)
20:40:37,639 ERROR [stderr](ajp - 127.0.0.1-8009-20)at com.lmig.requestit.utils.RequestITFileManagementUtils.sftpFileToRemoteDirectory(RequestITFileManagementUtils.java:54)
20:40:37,639 ERROR [stderr](ajp - 127.0.0.1-8009-20)at com.lmig.requestit.modules.desktop.automation.Form2039Automation.automateOutlookPhotoMoveFileToPhoto(Form2039Automation.java:109)<< >
20:40:37,640 ERROR [stderr](ajp - 127.0.0.1-8009-20)... 27更多
以下是来自JSCH的日志:
13:41:10,184 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:连接到&#34;服务器&#34; 24号港口
13:41:10,188 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:已建立连接
13:41:10,190 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:远程版本字符串:SSH-2.0-1.07 FlowSsh:WinSSHD 5.20
13:41:10,190 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:本地版本字符串:SSH-2.0-JSCH-0.1.44
13:41:10,190 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:CheckCiphers:aes256-ctr,aes192-ctr,aes128-ctr,aes256-cbc,aes192-cbc,aes128- CBC,3DES-CTR,ARCFOUR,arcfour128,arcfour256
13:41:10,231 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:aes256-ctr不可用。
13:41:10,231 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:aes192-ctr不可用。
13:41:10,232 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:aes256-cbc不可用。
13:41:10,232 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:aes192-cbc不可用。
13:41:10,232 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:arcfour256不可用。
13:41:10,232 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:SSH_MSG_KEXINIT已发送
13:41:10,233 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:收到SSH_MSG_KEXINIT
13:41:10,235 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:kex:server-&gt; client aes128-ctr hmac-md5 none
13:41:10,235 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:kex:client-&gt; server aes128-ctr hmac-md5 none
13:41:10,261 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:SSH_MSG_KEXDH_INIT已发送
13:41:10,262 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:期待SSH_MSG_KEXDH_REPLY
13:41:10,285 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:ssh_rsa_verify:signature true
13:41:10,299 INFO [stdout](ajp - 127.0.0.1-8009-7)警告:永久添加&#39; server&#39; (RSA)到已知主机列表。
13:41:10,299 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:SSH_MSG_NEWKEYS已发送
13:41:10,299 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:SSH_MSG_NEWKEYS收到
13:41:10,312 INFO [stdout](ajp - 127.0.0.1-8009-7)INFO:发送了SSH_MSG_SERVICE_REQUEST
13:41:10,312 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:收到SSH_MSG_SERVICE_ACCEPT
13:41:10,314 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:可以继续的身份验证:gssapi-with-mic,publickey,keyboard-interactive,password
13:41:10,314 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:下一个身份验证方法:gssapi-with-mic
13:41:10,330 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:可以继续的身份验证:publickey,keyboard-interactive,password
13:41:10,330 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:下一个身份验证方法:publickey
13:41:10,333 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:可以继续的身份验证:密码
13:41:10,333 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:下一个身份验证方法:密码
13:41:13,345 INFO [stdout](ajp - 127.0.0.1-8009-7)信息:断开&#34;服务器&#34; 24号港口