如何使用密码或 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
is to verify the server's host key。不对用户进行身份验证。
要对用户进行身份验证,您需要使用 SessionOptions.SshPrivateKeyPath
。
请参阅 Understanding SSH key pairs 了解其中的区别。
至于你的问题。您可以同时设置 SessionOptions.SshPrivateKeyPath
和 SessionOptions.Password
。 WinSCP 将首先尝试私钥,只有在失败时才会回退到密码。 (或者它会同时使用,是服务器需要的)
我正在尝试使用 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
is to verify the server's host key。不对用户进行身份验证。
要对用户进行身份验证,您需要使用 SessionOptions.SshPrivateKeyPath
。
请参阅 Understanding SSH key pairs 了解其中的区别。
至于你的问题。您可以同时设置 SessionOptions.SshPrivateKeyPath
和 SessionOptions.Password
。 WinSCP 将首先尝试私钥,只有在失败时才会回退到密码。 (或者它会同时使用,是服务器需要的)