Um início de sessão FTPS prova que a ligação de controlo funcionou. Uma listagem de diretório precisa de outra ligação, por isso um proxy pode permitir o início de sessão e bloquear o passo seguinte.

Para um servidor FTPS explícito, configure a rota de controlo e o modo passivo com WinSCP .NET:

var options = new WinSCP.SessionOptions
{
    Protocol = WinSCP.Protocol.Ftp,
    HostName = "ftp.example.net",
    PortNumber = 21,
    UserName = ftpUser,
    Password = ftpPassword,
    FtpSecure = WinSCP.FtpSecure.Explicit,
    FtpMode = WinSCP.FtpMode.Passive
};

options.AddRawSettings("ProxyMethod", "3");
options.AddRawSettings("ProxyHost", "proxy.example.net");
options.AddRawSettings("ProxyPort", "8080");

A definição ProxyMethod com o valor 3 seleciona HTTP CONNECT. Abra estas opções através do ciclo de vida normal do WinSCP Session na aplicação e acrescente as definições em bruto ProxyUsername e ProxyPassword quando o intermediário exigir autenticação.

Siga a falha da listagem

Examine o registo da sessão para encontrar o ponto final de dados passivo negociado e o respetivo erro de ligação. O proxy tem de permitir esse destino e essa porta, bem como o ponto final de controlo FTP. Por isso, uma regra que só permita CONNECT para a porta de controlo pode aceitar o início de sessão e rejeitar a listagem.

Alterar apenas a porta de controlo não corrige um caminho de dados bloqueado. Use o ponto final de dados registado ao verificar a política de rede.

Este exemplo inicia FTPS explícito na porta 21 e negoceia TLS. Para um ponto final FTPS implícito, use o modo FtpSecure correspondente e a porta do servidor. Em ambos os casos, use o nome de anfitrião TLS real do servidor e a configuração de validação de certificados.

Artigos relacionados