我想使用“With Ftp session”组件来配置我与 SFTP 服务器的连接,但是我使用的是密钥文件而不是密码。但是当我尝试连接时总是出现这个错误
这是我的配置:
With FTP Session活动忽略了私钥参数并总是尝试使用密码进行连接。您遇到的错误是由于 SSH 库收到了一个未初始化的密码变量。
这是Activities/FTP/UiPath.FTP/SftpSession.cs
添加 PrivateKey 身份验证机制的更新代码。同时,我将把这个修复贡献给 Github。
请注意,您必须克隆和构建 https://github.com/UiPath/Community.Activities)才能正常工作。
public SftpSession(FtpConfiguration ftpConfiguration)
{
if (ftpConfiguration == null)
{
throw new ArgumentNullException(nameof(ftpConfiguration));
}
ConnectionInfo connectionInfo = null;
var auths = new List<AuthenticationMethod>();
if (!String.IsNullOrEmpty(ftpConfiguration.Password))
{
auths.Add(new PasswordAuthenticationMethod(ftpConfiguration.Username, ftpConfiguration.Password));
}
if (!String.IsNullOrEmpty(ftpConfiguration.ClientCertificatePath)) {
PrivateKeyFile keyFile = new PrivateKeyFile(ftpConfiguration.ClientCertificatePath, ftpConfiguration.ClientCertificatePassword);
var keyFiles = new[] { keyFile };
auths.Add(new PrivateKeyAuthenticationMethod(ftpConfiguration.Username, keyFiles));
}
if (auths.Count == 0)
{
throw new ArgumentNullException("Need to provide either private key or password");
}
if (ftpConfiguration.Port == null)
{
connectionInfo = new ConnectionInfo(ftpConfiguration.Host, ftpConfiguration.Username, auths.ToArray());
}
else
{
connectionInfo = new ConnectionInfo(ftpConfiguration.Host, ftpConfiguration.Port.Value, ftpConfiguration.Username, auths.ToArray());
}
_sftpClient = new SftpClient(connectionInfo);
}