我需要通过WinSCP .NET程序集从FTP下载文件。我目前有这个代码,但错误说身份验证失败。
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"
但我删除它,因为我没有它,我认为这是SFTP(不确定) 我已经手动尝试了凭据并且它们可以工作。我可以登录了。 请帮忙。谢谢。
答案 0 :(得分:4)
针对您的情况,有WinSCP常见问题解答:
Why I cannot connect/transfer using script, when I can using GUI (or vice versa)?
最简单的解决方案是使用GUI会话中的Generate transfer code函数来获取正常工作的代码模板。
Generate transfer code dialog打开。选择 .NET程序集选项卡并确保选择 C#语言。
答案 1 :(得分:0)
除SSH连接凭据外,还需要SSH主机密钥指纹。
您应该获得SSH主机密钥指纹以及凭据 来自服务器管理员。知道主机密钥指纹因此 能够验证它是保护SSH的一个组成部分 连接。它可以防止中间人攻击。
这可以帮助您获取主持人密钥: