import org.apache.sshd.client.future.AuthFuture;
import org.apache.sshd.client.keyverifier.ServerKeyVerifier;
import org.apache.sshd.client.session.ClientSession;
-import org.apache.sshd.client.session.ClientSessionImpl;
import org.apache.sshd.client.session.SessionFactory;
import org.apache.sshd.common.future.SshFutureListener;
import org.apache.sshd.common.io.IoAcceptor;
import org.apache.sshd.common.io.IoServiceFactory;
-import org.apache.sshd.common.kex.KeyExchange;
import org.apache.sshd.common.session.Session;
import org.apache.sshd.common.session.SessionListener;
import org.apache.sshd.netty.NettyIoServiceFactory;
doAuth(clientSession);
break;
case Authenticated:
- doPostAuth(clientSession);
+ CallHomeSessionContext.getFrom(clientSession).openNetconfChannel();
break;
default:
break;
}
LOG.debug("SSH Session {} closed", session);
}
- };
- }
-
- private static void doPostAuth(final ClientSession session) {
- CallHomeSessionContext.getFrom(session).openNetconfChannel();
- }
- private void doAuth(final ClientSession session) {
- try {
- final AuthFuture authFuture = CallHomeSessionContext.getFrom(session).authorize();
- authFuture.addListener(newAuthSshFutureListener(session));
- } catch (IOException e) {
- LOG.error("Failed to authorize session {}", session, e);
- }
+ private void doAuth(final ClientSession session) {
+ try {
+ final AuthFuture authFuture = CallHomeSessionContext.getFrom(session).authorize();
+ authFuture.addListener(newAuthSshFutureListener(session));
+ } catch (IOException e) {
+ LOG.error("Failed to authorize session {}", session, e);
+ }
+ }
+ };
}
private SshFutureListener<AuthFuture> newAuthSshFutureListener(final ClientSession session) {
+ final PublicKey serverKey = session.getKex().getServerKey();
+
return new SshFutureListener<AuthFuture>() {
@Override
public void operationComplete(final AuthFuture authFuture) {
}
private void onFailure(final Throwable throwable) {
- ClientSessionImpl impl = (ClientSessionImpl) session;
LOG.error("Authorize failed for session {}", session, throwable);
-
- KeyExchange kex = impl.getKex();
- PublicKey key = kex.getServerKey();
- recorder.reportFailedAuth(key);
-
+ recorder.reportFailedAuth(serverKey);
session.close(true);
}
client.start();
acceptor.bind(bindAddress);
} catch (IOException e) {
- LOG.error("Unable to start NETCONF CallHome Service", e);
+ LOG.error("Unable to start NETCONF CallHome Service on {}", bindAddress, e);
throw e;
}
}