Skip to content

Files Uploads sometimes but fails most of the time. getting error SSH.NET (Permission denied (publickey)) #620

Closed

Description

@DevMusaab

I am trying to upload file using SFTP. The file gets uploaded sometimes and most the times it throws the error SSH.NET (Permission denied (publickey)) The SFTP server accepts only whitelist IP addresses.

public void SetConnection(string userName, string strRSAKey)
        {
            var authMethods = new List<AuthenticationMethod>();
            authMethods.Add(new PrivateKeyAuthenticationMethod(
                userName, 
                new[] { new PrivateKeyFile(GenerateStream(strRSAKey)) }
                ));

            connectionInfo = new ConnectionInfo(hostName, port, userName, authMethods.ToArray());
        }

        public bool UploadFile(string sourceFilePath, string destinationFilePath)
        {
            if (connectionInfo != null)
            {
                using (var client = new SftpClient(connectionInfo))
                {
                    client.Connect();
                    if (client.IsConnected)
                    {
                        var csvFile = File.Open(sourceFilePath, FileMode.Open);
                        client.UploadFile(csvFile, destinationFilePath, true);
                        csvFile.Dispose();
                    }
                    client.Disconnect();
                    return true;
                }
            }
            return false;
        }

        private Stream GenerateStream(string str)
        {
            var stream = new MemoryStream();
            var writer = new StreamWriter(stream);
            writer.Write(str);
            writer.Flush();
            stream.Position = 0;
            return stream;
        }

Activity

  1. codex-nz commented on Mar 30, 2020

    @codex-nz

    I encountered something similar and used the following that seemed to get me further (only to hit another bug/undefined feature):

    using (var privateKeyFile = new PrivateKeyFile(_options.PrivateKeyPath))
    using (var connectionInfo = new PrivateKeyConnectionInfo(_options.Host, _options.Username, privateKeyFile))
    using (_client = new SshClient(connectionInfo))
    { }

    NOTE: the use of PrivateKeyConnectionInfo in place of ConnectionInfo.
    Hope this helps..

  2. added this to the 2023.0.0 milestone on Sep 18, 2023
  3. WojciechNagorski commented on Sep 23, 2023

    @WojciechNagorski
    Collaborator

    Fixed by #1177 and #1180

  4. WojciechNagorski commented on Oct 10, 2023

    @WojciechNagorski
    Collaborator

    Version 2023.0.0 has been published https://www.nuget.org/packages/SSH.NET/2023.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions