@Override
    public Host getJumphost(final String alias) {
        if(StringUtils.isBlank(alias)) {
            return null;
        }
        final String proxyJump = configuration.lookup(alias).getProxyJump();
        if(StringUtils.isBlank(proxyJump)) {
            return null;
        }
        if(log.isInfoEnabled()) {
            log.info(String.format("Found jump host configuration %s from %s", proxyJump, configuration));
        }
        try {
            final Host host = new HostParser(new ProtocolFactory(Collections.singleton(new SFTPProtocol())), new SFTPProtocol()).get(proxyJump);
            // Resolve credentials
            host.setCredentials(credentials.configure(host));
            // Resolve alias if any
            host.setPort(hostname.getPort(host.getHostname()));
            host.setHostname(hostname.getHostname(host.getHostname()));
            return host;
        }
        catch(HostParserException e) {
            log.warn(String.format("Failure parsing JumpHost directive %s", proxyJump));
            return null;
        }
    }
@Test
    public void testJumpHostAlias() {
        OpenSSHJumpHostConfigurator c = new OpenSSHJumpHostConfigurator(new OpenSshConfig(
            new Local("src/test/resources", "openssh/config")));
        final Host jumpHost = c.getJumphost("remote-host-nickname");
        assertEquals("bastion-hostname", jumpHost.getHostname());
        assertEquals("user1", jumpHost.getCredentials().getUsername());
        assertEquals(2222, jumpHost.getPort());
    }