SCP performs a transfer by running scp on the server with the remote path
embedded in a command. On a shell-based server that command is interpreted
by a shell, so a path that is not quoted to suit that shell can be executed
as a command on the server (GHSA-mggc-4xg6-vcxf); on a non-shell-based
server the path is used literally and must not be quoted at all. The right
encoding therefore depends on the server, and no single transformation is
safe for every server.
Rather than default this choice, obsolete the ScpClient constructors that
implicitly used DoubleQuote and add constructors that take an
IRemotePathTransformation explicitly, so callers must choose one suited to
their server and trust environment. DoubleQuote remains the default for the
obsolete constructors, so existing behaviour is unchanged. Document the
consideration on ScpClient and IRemotePathTransformation, and recommend
using SFTP.
* Integrate `ZLibStream` from .NET 6.0+ with SSH.NET.
* OpenSSH server does not support zlib (pre-auth); OpenSSH client still supports zlib (pre-auth)
* Correct compression algorithm name; Update README.md
* Integrate `ZLibStream` from .NET 6.0+ with SSH.NET.
* OpenSSH server does not support zlib (pre-auth); OpenSSH client still supports zlib (pre-auth)
* Correct compression algorithm name; Update README.md
* Test the compression by upload/download file
* Refactor compression.
* Move delayed compression logic to base class.
* seal Zlib
* update unit test
* update unit test to see if it can trigger integration test
* Flush zlibStream
* Fix integration test
* update test
* Update ConnectionInfo.cs
Co-authored-by: Rob Hague <rob.hague00@gmail.com>
* Update README.md
---------
Co-authored-by: Rob Hague <rob.hague00@gmail.com>