![](/img/trans.png)
[英]SSH host key fingerprint ... does not match pattern ... when using WinSCP .NET assembly in C# to download files
[英]How to SFTP authenticate using password or SSH fingerprint WinSCP C# .NET assembly
我正在嘗試通過SFTP連接連接到服務器,但是我嘗試使用SSH指紋進行身份驗證,如果這不正確,則應嘗試使用SFTP密碼。
我遇到的問題是需要它們兩者都可以訪問服務器,這應該是不同的,如果不是SSH指紋,請嘗試使用密碼,但不能正常工作。
有一種方法可以首先驗證指紋,如果不正確,請驗證用戶密碼?
這就是我所擁有的:
public string FilesSFTP_FTP()
{
TransferOptions TransferOption = new TransferOptions();
TransferOperationResult TransferResult;
SessionOptions sessionoptions = new SessionOptions();
Session session = new Session();
if (DataFile.sTransportType == "S")
{
sessionoptions.Protocol = Protocol.Sftp;
sessionoptions.PortNumber = 22;
sessionoptions.SshHostKeyFingerprint = DataFile.sFingerPrint;
}
else if (DataFile.sTransportType == "F")
{
sessionoptions.Protocol = Protocol.Ftp;
sessionoptions.PortNumber = 21;
}
sessionoptions.HostName = DataFile.sIPAddress;
sessionoptions.UserName = DataFile.sUserID;
sessionoptions.Password = DataFile.sPassword;
TransferOption.TransferMode = TransferMode.Binary;
TransferOption.PreserveTimestamp = false;
TransferOption.ResumeSupport.State = TransferResumeSupportState.Off;
session.Open(sessionoptions);
}
還有另一個屬性需要設置嗎?
您不能“使用SSH指紋進行身份驗證” 。
SessionOptions.SshHostKeyFingerprint
用於驗證服務器的主機密鑰 。 不驗證用戶身份。
要驗證用戶身份,您需要使用SessionOptions.SshPrivateKeyPath
。
請參閱了解SSH密鑰對以了解不同之處。
至於你的問題。 您可以同時設置SessionOptions.SshPrivateKeyPath
和SessionOptions.Password
。 WinSCP將首先嘗試使用私鑰,只有在私鑰失敗的情況下,它才會退回到密碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.