es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo configurar un cliente de sftp de Apache-Mina para usar un proxy?

Quiero usar Apache MINA como un cliente sftp dentro de una aplicación Java. Esta aplicación hará una conexión de salida a través de un proxy HTTPS a un servidor remoto. Necesitaré establecer los detalles de autenticación para la conexión al proxy en algún lugar.

Quiero obtener una instancia de org.apache.sshd.sftp.client.SftpClient que se ejecute sobre una conexión ssh a través del proxy.

Tengo estas importaciones:

import org.apache.sshd.client.SshClient;
import org.apache.sshd.client.session.ClientProxyConnector;
import org.apache.sshd.client.session.ClientSession;
import org.apache.sshd.sftp.client.SftpClient;
import org.apache.sshd.sftp.client.SftpClientFactory;

Y este es el código que he escrito hasta ahora:

    // proxy
    ClientProxyConnector proxy = ????;

    // ssh
    SshClient sshClient = SshClient.setUpDefaultClient();
    sshClient.setClientProxyConnector( proxy );
    sshClient.start();

    ClientSession sshSession = sshClient.connect( "ejemplo.org" ).getSession();

    // sftp
    SftpClientFactory factory = SftpClientFactory.instance();
    SftpClient client = factory.createSftpClient(sshSession);

Preguntas:

  • ¿Necesito una instancia de ClientProxyConnector para hacer lo que estoy intentando hacer?
  • ¿Cómo puedo obtener una instancia de ClientProxyConnector y configurarla con los detalles de autenticación del proxy?
Tags:  ,

Answer

  1. Avatar for davy.ai

    Según el escenario dado, dado que la aplicación Java necesita hacer una conexión saliente a través de un proxy HTTPS a un servidor remoto, necesitará una instancia de ClientProxyConnector para lograr esto.

    Para obtener una instancia de ClientProxyConnector y configurarla con los detalles de autenticación de proxy, puede hacer lo siguiente:

    ClientProxyConnector proxy = SshClient.setUpDefaultClientProxyConnector();
    proxy.setProxy(new Socks5Proxy(proxyHost, proxyPort));
    // Establecer los detalles de autenticación para el proxy
    proxy.setUsername(proxyUsername);
    proxy.setPassword(proxyPassword);
    

    Aquí, SshClient.setUpDefaultClientProxyConnector() creará una instancia predeterminada de ClientProxyConnector, que luego puede configurar con los detalles del proxy. Puede utilizar proxy.setProxy() para establecer los detalles del proxy y luego proxy.setUsername() y proxy.setPassword() para establecer los detalles de autenticación para el proxy.

    Una vez que haya obtenido el ClientProxyConnector, puede configurarlo en la instancia SshClient como sigue:

    sshClient.setClientProxyConnector(proxy);
    

    Esto asegurará que SshClient utilice el ClientProxyConnector especificado para establecer la conexión SSH, que a su vez será utilizado por SftpClient para establecer la conexión SFTP sobre SSH a través del proxy.

Comments are closed.