c# - 使用 WinSCP 禁止在 SFTP 或 SCP 中使用主机 key

标签 c# sftp public-key winscp winscp-net

我正在开发一个应用程序,在其中使用 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 一起使用需要主机 key 。

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

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

还有一个选项可以让用户禁止使用主机 key 。

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

如果需要任何其他信息,请告诉我。

最佳答案

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

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

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


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

关于c# - 使用 WinSCP 禁止在 SFTP 或 SCP 中使用主机 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24188707/

相关文章:

c# - 使用 Renci.SshNet SftpClient 更改具有绝对路径的目录导致 SftpPathNotFoundException

c# - SSH.Net 上传文件到 SFTP 服务器返回异常,消息 "Failure"没有明确的细节

validation - 基于 RSA 公钥大小拒绝双向 TLS gRPC 连接

git - Github 上的公钥密码学是如何工作的?

C# MySQL 在将数据插入我的表时遇到 fatal error

C# Invalidate 不调用 paint 方法

.net - 访问 Windows OpenSSH SFTP 服务器上的文件时出现错误 "Bad message"

github - 无法通过 ssh 连接到 github

c# - 使用 Fluent api 进行 3 种方式的多对多

c# - 如何正确使用 ConcurrentQueue 中的 block