代码之家  ›  专栏  ›  技术社区  ›  theo

使用WinSCP从FTP下载文件的代码。NET程序集未连接,但我可以在WinSCP GUI中连接

  •  3
  • theo  · 技术社区  · 8 年前

    try
    {
        SessionOptions sessionOptions = new SessionOptions
        {
            Protocol = Protocol.Ftp,
            HostName = "172.xx.xxx.xx",
            UserName = "usersample",
            Password = "P@ssw0rd",
            PortNumber = 21
        };
    
        using (Session session = new Session())
        {
            // Connect
            session.Open(sessionOptions);
    
            // Download files
            TransferOptions transferOptions = new TransferOptions();
            transferOptions.TransferMode = TransferMode.Binary;
    
            TransferOperationResult transferResult;
            transferResult =
                session.GetFiles(
                    "/HST/sample.txt", "C:\\Users\\john\\Documents\\SampleFolder\\",
                    false, transferOptions);
    
            // Throw on any error
            transferResult.Check();
    
            // Print results
            foreach (TransferEventArgs transfer in transferResult.Transfers)
            {
                Console.WriteLine("Download of {0} succeeded", transfer.FileName);
            }
    
            Console.ReadLine();
        }
    
    }
    catch (Exception e)
    {
        Console.WriteLine("Error: {0}", e);
        Console.ReadLine();
    }
    

    https://winscp.net/eng/docs/library_session_getfiles

    最初,它具有以下功能:

    SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
    

    我已经手动尝试了这些凭据,它们很有效。我可以登录。 请帮忙。非常感谢。

    2 回复  |  直到 8 年前
        1
  •  5
  •   Martin Prikryl    8 年前

    针对您的情况,有WinSCP常见问题解答:
    Why I cannot connect/transfer using script, when I can using GUI (or vice versa)?


    首先,最简单的解决方案是使用 Generate transfer code

        2
  •  0
  •   M_Idrees    8 年前

    除了SSH连接的凭据之外,还需要SSH主机密钥指纹。

    来自服务器管理员。了解主机密钥指纹,从而 联系它可以防止中间人攻击。

    https://winscp.net/eng/docs/faq_hostkey

    https://winscp.net/eng/docs/ui_fsinfo