c# upload sftp permission-denied ssh.net

No se puede cargar un archivo SFTP usando SSH.NET en C#- Permiso denegado



upload permission-denied (2)

Estoy intentando cargar un archivo usando el protocolo SFTP usando C # usando la biblioteca SSH.NET. A continuación se muestra el código que estoy usando

FileInfo f=new FileInfo("C://mdu//abcd.xml"); string uploadfile=f.FullName; Console.WriteLine(f.Name); Console.WriteLine("uploadfile"+uploadfile); var client = new SftpClient(host, port, username, password); client.Connect(); if(client.IsConnected){ Console.WriteLine("I AM CONNECTED"); } var fileStream = new FileStream(uploadfile, FileMode.Open); if(fileStream!=null){ Console.WriteLine("YOU ARE NOT NULL"); } client.BufferSize = 4 * 1024; client.UploadFile(fileStream, f.Name,null); client.Disconnect(); client.Dispose();

Soy capaz de conectarme y el filestream tampoco es NULL. Pero estoy recibiendo la PermissionDeniedException al intentar cargar un archivo.

Unhandled Exception: Renci.SshNet.Common.SftpPermissionDeniedException: Permission denied at Renci.SshNet.Sftp.SftpSession.RequestOpen(String path, Flags flags, Boolean nullOnError) at Renci.SshNet.SftpClient.InternalUploadFile(Stream input, String path, Flags flags, SftpUploadAsyncResult asyncResult, Action`1 uploadCallback) at Renci.SshNet.SftpClient.UploadFile(Stream input, String path, Boolean canOverride, Action`1 uploadCallback) at Renci.SshNet.SftpClient.UploadFile(Stream input, String path, Action`1 uploadCallback) at movemsi.Program.UploadFile() at movemsi.Program.Main(String[] args)

¿Hay alguna configuración que me falta en el código anterior. Cualquier ayuda es muy apreciada.


Puedes hacerlo:

FileInfo f = new FileInfo("C://mdu//abcd.xml"); string uploadfile = f.FullName; Console.WriteLine(f.Name); Console.WriteLine("uploadfile" + uploadfile); //Passing the sftp host without the "sftp://" var client = new SftpClient("ftp.example.com", port, username, password); client.Connect(); if(client.IsConnected) { var fileStream = new FileStream(uploadfile, FileMode.Open); if(fileStream != null) { //If you have a folder located at sftp://ftp.example.com/share //then you can add this like: client.UploadFile(fileStream, "/share/" + f.Name,null); client.Disconnect(); client.Dispose(); } }


También debe especificar una ruta completa para cargar el archivo.

Por ejemplo:

client.UploadFile(fileStream, "/home/user/" + f.Name, null);

Sin la ruta, el servidor SFTP probablemente intenta escribir el archivo en una carpeta raíz u otra carpeta a la que no tiene acceso de escritura (por lo tanto, el Permiso denegado ).