2

过去几天我一直在努力使用需要我试图通过.Net访问的“CCC”命令的 FTPS 服务器

我正在使用 AlexFTPS 库。我可以连接和协商 AUTH TLS,我可以更改目录,但是当我尝试列出目录或下载文件时,服务器会询问“CCC”命令。当我发送“CCC”命令时,我收到“200 CCC 上下文已启用”回复,但随后我无法发送任何其他内容,只要我收到服务器超时异常。

我做了进一步的测试:

  • WS_FTP:如果我选中“在 SSL 身份验证后使用未加密的命令通道”选项,则有效
  • Filezilla:即使我将“CCC”添加为登录后命令也不起作用
  • http://www.componentpro.com/ftp.net/:有效但不是开源的

任何帮助将不胜感激......对不起,我不是 FTP 流利......

这是我的代码:

    Using Client As New AlexPilotti.FTPS.Client.FTPSClient

        AddHandler Client.LogCommand, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogCommandEventArgs)
                                          Console.WriteLine(args.CommandText)
                                      End Sub

        AddHandler Client.LogServerReply, Sub(sender As Object, args As AlexPilotti.FTPS.Common.LogServerReplyEventArgs)
                                              Console.WriteLine(args.ServerReply)
                                          End Sub

        Dim cred = New Net.NetworkCredential("login", "password")
        Client.Connect("ftps.server.com", cred, AlexPilotti.FTPS.Client.ESSLSupportMode.CredentialsRequired)

        Client.SendCustomCommand("SYST")
        Client.SendCustomCommand("PBSZ 0")
        Client.SendCustomCommand("PROT P")
        Client.SendCustomCommand("FEAT")
        Client.SendCustomCommand("PWD")
        Client.SendCustomCommand("TYPE A")
        Client.SendCustomCommand("PASV")
        Client.SendCustomCommand("CCC")
        Client.SendCustomCommand("LIST")

        Console.ReadKey()

    End Using

谢谢 !

4

1 回答 1

1

CCC(“清除命令通道”)是一个特殊命令,它将连接从 SSL(以 开头AUTH TLS)再次降级为未加密。因此,仅将其声明为在已建立的控制连接上发送的自定义命令是不够的,它必须类似于AUTH TLSFTPS 库进行处理,以便在命令完成后发生 TLS 降级。

于 2014-02-21T18:39:01.060 回答