簡體   English   中英

如何使用密碼或SSH指紋WinSCP C#.NET程序集進行SFTP身份驗證

[英]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.SshPrivateKeyPathSessionOptions.Password WinSCP將首先嘗試使用私鑰,只有在私鑰失敗的情況下,它才會退回到密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM