为什么我需要在 WinSCP .NET 程序集中使用 SshHostKeyFingerprint,而 WinSCP GUI 不需要这样的选项?

问题描述 投票:0回答:1

这是我第一次使用 WinSCP .NET 客户端从远程 Linux PC 上传文件。如果我在没有定义

SshHostKeyFingerprint
的情况下运行以下代码,我会收到错误:

SessionOptions.Protocol 为 Protocol.Sftp 或 Protocol.Scp,但未设置 SessionOptions.SshHostKeyFingerprint

所以我认为必须定义一个

SshHostKeyFingerprint
,但我不知道在这里写什么。当我使用已知的 WinSCP 软件工具(协议:SFTP)连接到同一台 Linux PC 时,我只需输入主机名、用户名和密码,即可建立连接。当我使用我的代码时,为什么会被要求提供
SshHostKeyFingerprint
?在哪里可以找到远程服务器的
SshHostKeyFingerprint

try
{
    // Setup session options
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Sftp,
        HostName = TagService.MAE_IP_PLC,                    
        UserName = "manufact",
        Password = "SUNRISE",
        //SshHostKeyFingerprint = "ssh-rsa 2048 xxxxxxxxxxx..." ???????????
    };

    using (Session session = new Session())
    {
        // Connect
        session.Open(sessionOptions);

        // Upload files
        TransferOptions transferOptions = new TransferOptions();
        transferOptions.TransferMode = TransferMode.Binary;

        TransferOperationResult transferResult;
        transferResult =
            session.PutFiles(@"c:\test\versions_840Dsl", "/card/siemens/versions.xml", false, transferOptions);

        // Throw on any error
        transferResult.Check();

        // Print results
        foreach (TransferEventArgs transfer in transferResult.Transfers)
        {
            Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
        }
    }

    //return 0;
}
catch (Exception e)
{
    Console.WriteLine("Error: {0}", e);
    //return 1;
    using (StreamWriter sw = File.AppendText(CommonClass.error_path))
    {
        sw.WriteLine("WinSCP Error " + e + " " + Convert.ToString(DateTime.Now));
    }
}
c# ssh sftp winscp-net rsa-key-fingerprint
1个回答
1
投票

WinSCP GUI 不需要验证主机密钥的说法是不正确的。每个像样的 SSH/SFTP 客户端都需要这样做。验证主机密钥是确保 SSH 连接安全的重要组成部分。您可能只是忘记了 GUI 要求您在第一次连接时验证主机密钥。

相关问题:

另请参阅 WinSCP 常见问题解答 在哪里获取 SSH 主机密钥指纹来授权服务器?


如果您不关心安全性,请使用

SshHostKeyPolicy.GiveUpSecurityAndAcceptAny

© www.soinside.com 2019 - 2024. All rights reserved.