org.apache.sshd.common.SshException:DefaultOpenFuture - 用于 SFTP 通信的 APACHE MINA
org.apache.sshd.common.SshException: DefaultOpenFuture - APACHE MINA for SFTP Communication
我遇到以下异常:
org.apache.sshd.common.SshException: DefaultOpenFuture[ChannelSubsystem[id=0, recipient=-1]-
ClientSessionImpl[app6204@denad534.us.oracle.com/10.88.224.99:22][sftp]]: Failed to get operation result within specified timeout: 15000
at org.apache.sshd.common.future.AbstractSshFuture.formatExceptionMessage(AbstractSshFuture.java:187)
at org.apache.sshd.common.future.AbstractSshFuture.verifyResult(AbstractSshFuture.java:112)
at org.apache.sshd.client.future.DefaultOpenFuture.verify(DefaultOpenFuture.java:39)
at org.apache.sshd.client.future.DefaultOpenFuture.verify(DefaultOpenFuture.java:32)
at org.apache.sshd.client.subsystem.sftp.impl.DefaultSftpClient.<init>(DefaultSftpClient.java:97)
at org.apache.sshd.client.subsystem.sftp.impl.DefaultSftpClientFactory.createDefaultSftpClient(DefaultSftpClientFactory.java:67)
at org.apache.sshd.client.subsystem.sftp.impl.DefaultSftpClientFactory.createSftpClient(DefaultSftpClientFactory.java:47)
at org.apache.sshd.client.subsystem.sftp.SftpClientFactory.createSftpClient(SftpClientFactory.java:46)
at SSHClientExample.main(SSHClientExample.java:76)
代码:
public static void main(String[] args){
SshClient client = SshClient.setUpDefaultClient();
client.start();
try {
// DefaultOpenFuture defaultOpenFuture = new DefaultOpenFuture();
ConnectFuture future = client.connect("user", "Host", 22);
//ClientFactoryManager clientFactoryManager = client.
client.open();
client.start();
client.addPasswordIdentity("PWD");
client.setClientIdentityLoader(ClientIdentityLoader.DEFAULT);
client.setHostConfigEntryResolver(HostConfigEntryResolver.EMPTY);
ServerKeyVerifier serverKeyVerifier = AcceptAllServerKeyVerifier.INSTANCE;
client.setServerKeyVerifier(serverKeyVerifier);
SessionFactory sessionFactory = client.getSessionFactory();
ClientFactoryManager factoryManager =sessionFactory.getFactoryManager();
//.verify is necessary to get session
ClientSession clientSession = future.verify(100L,TimeUnit.SECONDS).getSession();
// ClientChannel clientChannel = clientSession.createChannel("exec");
future.setSession(clientSession);
//KeyPair keyPair = new KeyPair(PublicKey.serialVersionUID);
//clientSession.addPublicKeyIdentity();
clientSession.setAuthenticated();
System.out.println(future.isConnected());
System.out.println(clientSession);
SftpClientFactory sftpFactory = SftpClientFactory.instance();
//SFTP Version
SftpVersionSelector selector = SftpVersionSelector.fixedVersionSelector(6);
//SFTP Client
// clientSession.createChannel("FTP");
System.out.println("Client session opened?"+clientSession.isOpen());
System.out.println("Client is opened?"+client.isOpen());
clientSession.addPasswordIdentity("PWD");
//SftpClient sftpClient = sftpFactory.createSftpClient(clientSession, selector);
//System.out.println(sftpClient.open(" /slot/dummy/appmgr/location").getPath());
System.out.println(clientSession.getClientVersion());
//System.out.println(clientSession.createSubsystemChannel("SFTP").getSubsystem().getBytes());
DefaultSftpClientFactory defaultSftpClientFactory = new DefaultSftpClientFactory();
clientSession.addPublicKeyIdentity(KeyPairGeneratorMethod());
client.addPublicKeyIdentity(KeyPairGeneratorMethod());
//SftpClient sftp = defaultSftpClientFactory.createSftpClient(clientSession);
SftpClient sftp = defaultSftpClientFactory.createSftpClient(clientSession);
//= DefaultSftpClientFactory.INSTANCE.createSftpClient(clientSession);
//SftpClient sftp = new DefaultSftpClient(clientSession);
// SimpleSftpClientImpl sftp = new SimpleSftpClientImpl();
ClientChannel channel = clientSession.createSubsystemChannel(SftpConstants.SFTP_SUBSYSTEM_NAME);
System.out.println(channel.getSession().isAuthenticated());
//System.out.println(sftp.open(" /slot/dummy/appmgr/location").getPath()); //client.close();
}
catch (SshException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//TODO
}
//client.stop();
}
我能够通过以下行消除此错误。
clientSession.auth().verify();
我遇到以下异常:
org.apache.sshd.common.SshException: DefaultOpenFuture[ChannelSubsystem[id=0, recipient=-1]-
ClientSessionImpl[app6204@denad534.us.oracle.com/10.88.224.99:22][sftp]]: Failed to get operation result within specified timeout: 15000
at org.apache.sshd.common.future.AbstractSshFuture.formatExceptionMessage(AbstractSshFuture.java:187)
at org.apache.sshd.common.future.AbstractSshFuture.verifyResult(AbstractSshFuture.java:112)
at org.apache.sshd.client.future.DefaultOpenFuture.verify(DefaultOpenFuture.java:39)
at org.apache.sshd.client.future.DefaultOpenFuture.verify(DefaultOpenFuture.java:32)
at org.apache.sshd.client.subsystem.sftp.impl.DefaultSftpClient.<init>(DefaultSftpClient.java:97)
at org.apache.sshd.client.subsystem.sftp.impl.DefaultSftpClientFactory.createDefaultSftpClient(DefaultSftpClientFactory.java:67)
at org.apache.sshd.client.subsystem.sftp.impl.DefaultSftpClientFactory.createSftpClient(DefaultSftpClientFactory.java:47)
at org.apache.sshd.client.subsystem.sftp.SftpClientFactory.createSftpClient(SftpClientFactory.java:46)
at SSHClientExample.main(SSHClientExample.java:76)
代码:
public static void main(String[] args){
SshClient client = SshClient.setUpDefaultClient();
client.start();
try {
// DefaultOpenFuture defaultOpenFuture = new DefaultOpenFuture();
ConnectFuture future = client.connect("user", "Host", 22);
//ClientFactoryManager clientFactoryManager = client.
client.open();
client.start();
client.addPasswordIdentity("PWD");
client.setClientIdentityLoader(ClientIdentityLoader.DEFAULT);
client.setHostConfigEntryResolver(HostConfigEntryResolver.EMPTY);
ServerKeyVerifier serverKeyVerifier = AcceptAllServerKeyVerifier.INSTANCE;
client.setServerKeyVerifier(serverKeyVerifier);
SessionFactory sessionFactory = client.getSessionFactory();
ClientFactoryManager factoryManager =sessionFactory.getFactoryManager();
//.verify is necessary to get session
ClientSession clientSession = future.verify(100L,TimeUnit.SECONDS).getSession();
// ClientChannel clientChannel = clientSession.createChannel("exec");
future.setSession(clientSession);
//KeyPair keyPair = new KeyPair(PublicKey.serialVersionUID);
//clientSession.addPublicKeyIdentity();
clientSession.setAuthenticated();
System.out.println(future.isConnected());
System.out.println(clientSession);
SftpClientFactory sftpFactory = SftpClientFactory.instance();
//SFTP Version
SftpVersionSelector selector = SftpVersionSelector.fixedVersionSelector(6);
//SFTP Client
// clientSession.createChannel("FTP");
System.out.println("Client session opened?"+clientSession.isOpen());
System.out.println("Client is opened?"+client.isOpen());
clientSession.addPasswordIdentity("PWD");
//SftpClient sftpClient = sftpFactory.createSftpClient(clientSession, selector);
//System.out.println(sftpClient.open(" /slot/dummy/appmgr/location").getPath());
System.out.println(clientSession.getClientVersion());
//System.out.println(clientSession.createSubsystemChannel("SFTP").getSubsystem().getBytes());
DefaultSftpClientFactory defaultSftpClientFactory = new DefaultSftpClientFactory();
clientSession.addPublicKeyIdentity(KeyPairGeneratorMethod());
client.addPublicKeyIdentity(KeyPairGeneratorMethod());
//SftpClient sftp = defaultSftpClientFactory.createSftpClient(clientSession);
SftpClient sftp = defaultSftpClientFactory.createSftpClient(clientSession);
//= DefaultSftpClientFactory.INSTANCE.createSftpClient(clientSession);
//SftpClient sftp = new DefaultSftpClient(clientSession);
// SimpleSftpClientImpl sftp = new SimpleSftpClientImpl();
ClientChannel channel = clientSession.createSubsystemChannel(SftpConstants.SFTP_SUBSYSTEM_NAME);
System.out.println(channel.getSession().isAuthenticated());
//System.out.println(sftp.open(" /slot/dummy/appmgr/location").getPath()); //client.close();
}
catch (SshException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//TODO
}
//client.stop();
}
我能够通过以下行消除此错误。
clientSession.auth().verify();