private ConnectionInfo GetConnectionInfo(SFtpConfig sftpConfig)
{
var authMethods = new List<AuthenticationMethod>();
if (!string.IsNullOrEmpty(sftpConfig.Password))
{
var keyboardAuthMethod = new KeyboardInteractiveAuthenticationMethod(sftpConfig.Password);//键盘模拟连接
keyboardAuthMethod.AuthenticationPrompt += delegate(Object senderObject, AuthenticationPromptEventArgs eventArgs)
{
foreach (var prompt in eventArgs.Prompts)
{
if (prompt.Request.Equals("Password: ", StringComparison.InvariantCultureIgnoreCase))
{
prompt.Response = sftpConfig.Password;
}
}
};
authMethods.Add(new PasswordAuthenticationMethod(sftpConfig.UserName, sftpConfig.Password));
authMethods.Add(keyboardAuthMethod);
}
if (!string.IsNullOrEmpty(sftpConfig.PrivateKey))
{
var keyFile = new PrivateKeyFile(sftpConfig.PrivateKey);
var keyFiles = new[] { keyFile };
authMethods.Add(new PrivateKeyAuthenticationMethod(sftpConfig.UserName, keyFiles));
}
var connection = new ConnectionInfo(sftpConfig.Host, sftpConfig.Port, sftpConfig.UserName, authMethods.ToArray());
return connection;
}