2

我正在使用 WinSCP .NET 程序集(版本 5.5.0.3839)下载文件的应用程序

我下载文件的代码如下

public bool ReceiveFile(string ftpFilePath,out String downloadedFileName, String DestinationPath)
{
    bool sendingStatus = false;
    downloadedFileName = string.Empty;
    try
    {
        if (sessionOptions != null)
        {
            using (Session session = new Session())
            {
                // Connect
                bool isSessionOpened = OpenSession(session);
                if (isSessionOpened)
                {
                    // Upload files
                    TransferOptions transferOptions = new TransferOptions();
                    transferOptions.TransferMode = TransferMode.Automatic;

                    TransferOperationResult transferResult;
                    transferResult = session.GetFiles(ftpFilePath, DestinationPath, false, transferOptions);
                    // Throw on any error
                    transferResult.Check();

                    // Print results
                    foreach (TransferEventArgs transfer in transferResult.Transfers)
                    {
                        sendingStatus = true;
                        downloadedFileName = transfer.FileName;
                        //We are breaking here because we are assuming that for one import batch setup only one file will be downloaded
                        break;
                    }
                }
            }
        }
    }
    catch (Exception ex)
    {
    }
    return sendingStatus;
}

FTP 工作正常,但使用 SFTP 需要主机密钥。

当我直接使用 WinSCP 应用程序时,它会警告主机密钥,用户可以通过单击“复制密钥”按钮来复制主机密钥。

主机密钥将被复制到剪贴板,我们可以使用此密钥从 SFTP 或 SCP 下载文件。

还有一个选项,用户可以禁止使用主机密钥。

我想以编程方式禁止使用主机密钥。

让我知道是否需要任何其他信息。

4

1 回答 1

4

“禁止使用主机密钥”是什么意思?

没有选项可以禁止在 WinSCP 应用程序中使用主机密钥。您可以选择接受主机密钥并记住它,接受密钥而不记住它,以及拒绝密钥(并放弃连接)。
https://winscp.net/eng/docs/ssh_verifying_the_host_key

WinSCP .NET 程序集没有内置第一个选项,因为它(默认情况下)不保留任何配置,因此它不能将接受的密钥存储在任何地方。这是设计使然。设置SessionOptions.SshHostKeyFingerprint. 任何一个:


您的代码没有显示 的​​实现OpenSession,这里的关键部分是什么,因此不清楚您要做什么。

于 2014-06-12T19:02:39.063 回答