我正在尝试使用C#通过WinSCP连接到FTPS服务器,但是我遇到了这个错误:
SSH主机密钥指纹 ... 不符合模式 ...
经过大量的研究,我认为这与密钥的长度有关。当我使用WinSCP界面下的“服务器和协议信息”连接时,从WinSCP获取的密钥是
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
,但我在示例中看到的密钥较短,像这样 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
请问有人可以帮忙并提供任何解决此问题的指针将不胜感激。
以下是我的代码:
string winscpPath = "C:\\Program Files (x86)\\WinSCP\\WinSCP.exe";
string username = "User123";
string password = "abc1234";
string ftpSite = "192.168.5.110";
string localPath = "C:\\Users\\ttom\\Documents";
string remoteFTPDirectory = "/Usr/thisfolder";
string sshKey = "1b:68:10:80:77:c6:65:91:51:31:5t:65:1c:g6:13:20:39:g8:d8:6d";
Boolean winSCPLog = true;
string winSCPLogPath = "C:\\Users\\ttom\\Documents\\Visual Studio 2015\\Projects\\WebApplication1\\WebApplication1";
SessionOptions sessionOptions = new SessionOptions
{
Protocol = Protocol.Sftp,
HostName = ftpSite,
UserName = username,
Password = password,
SshHostKeyFingerprint = sshKey
};
using (Session session = new Session())
{
// WinSCP .NET assembly must be in GAC to be used with SSIS,
// set path to WinSCP.exe explicitly, if using non-default path.
session.ExecutablePath = winscpPath;
session.DisableVersionCheck = true;
if (winSCPLog)
{
session.SessionLogPath = @winSCPLogPath + @"ftplog.txt";
session.DebugLogPath = @winSCPLogPath + @"debuglog.txt";
}
// Connect
session.Timeout = new TimeSpan(0, 2, 0); // two minutes
session.Open(sessionOptions);
TransferOptions transferOptions = new TransferOptions();
transferOptions.TransferMode = TransferMode.Binary;
session.GetFiles(remoteFTPDirectory + "/" +
"test.txt", localPath, false, transferOptions);
}