Are you sure you are calling the Read method correctly? The offset
argument is not used to specify a remote offset from which to start reading data. It is an offset to the buffer
byte array to which to store the received data. To read data from a non-zero remote file offset, call Seek method on the stream.
For example, if you have a 1024-byte buffer and would like to read a 1024-byte block to it from file offset 40000, you would use the following code:
// create a 1024-byte buffer
byte[] buffer = new byte[1024];
// open a remote file
Stream stream = sftp.GetStream("file.ext", FileMode.Open);
// seek to offset 4000
stream.Seek(40000, SeekOrigin.Begin);
// read 1024 bytes from the current remote file position into the specified buffer
stream.Read(buffer, 0, 1024);
// close the stream
stream.Close();