0

我想使用“With Ftp session”组件来配置我与 SFTP 服务器的连接,但是我使用的是密钥文件而不是密码。但是当我尝试连接时总是出现这个错误

异常画面

这是我的配置:

活动配置

4

1 回答 1

0

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);

    }
于 2019-09-01T07:40:58.973 回答