Changelog

This documents notable changes in LibSSH.jl. The format is based on Keep a Changelog.

v0.7.1 - 2024-12-06

Added

Fixed

  • Fixed behaviour of the Session.known_hosts property (#30).

v0.7.0 - 2024-10-25

Added

  • Demo.DemoServer now supports passing allow_auth_none=true to allow easily setting up passwordless authentication (#28).

Fixed

  • Previously the Demo.DemoServer's command execution implementation would only send the command output after it had finished. Now the output gets sent as soon as it's printed by the command (#28).

Changed

v0.6.1 - 2024-10-20

Added

  • Added support for setting the file descriptor for a Session during construction (#21).
  • Our Base.run() methods now accept plain Strings as well as Cmds (#24).
  • Implemented convenience Base.read(::String, ::SftpSession) methods that will take a String filename without having to open the file explicitly (#25).
  • Added support for specifying whether a Session should use the users SSH config with the process_config option (#25).

Fixed

v0.6.0 - 2024-10-11

Added

Fixed

Changed

  • Breaking: Session now needs to be closed explictly instead of relying on the finalizer for the memory to be freed.

v0.5.0 - 2024-08-10

Added

Changed

  • Updated the libssh library to 0.11.0 (#11).

v0.4.0 - 2024-03-12

Added

Changed

  • Some automatically-wrapped low-level functions changed names back to retaining their ssh_ prefixes, and they now have a throw argument to allow disabling throwing an exception upon error (#9).
  • authenticate() will now do host verification as well. This is critical for security so it is strongly recommend that all dependencies update to this release (#9).
  • All the throw_on_* arguments in the various Session and SshChannel methods have been renamed throw for consistency with Base and the new throw arguments in some auto-wrapped bindings (#9).

v0.3.0 - 2024-03-10

Added

Changed

  • The userauth_* functions will now throw a LibSSHException by default if they got a AuthStatus_Error from libssh. This can be disabled by passing throw_on_error=false (#6).
  • gssapi_available() was renamed to Gssapi.isavailable() (#6).
  • userauth_kbdint_getprompts() returns a vector of KbdintPrompt objects instead of tuples (#7).

Fixed

  • Fixed some race conditions in poll_loop() and Forwarder() (#6).
  • Base.run(::Cmd, ::Session) now properly converts commands into strings before executing them remotely, previously things like quotes weren't escaped properly (#6).
  • Fixed a bug in Base.run(::Cmd, ::Session) that would clear the output buffer when printing (#6).
  • Changed poll_loop() to poll the stdout and stderr streams, which fixes a bug where callbacks would sometimes not get executed even when data was available (#8).

v0.2.1 - 2024-02-27

Added

  • Initial client support for GSSAPI authentication (#3). This is not fully tested, so use it with caution.

Changed

Fixed

v0.2.0 - 2024-02-01

Changed

  • The Command execution API was completely rewritten to match Julia's API (#2). This is a breaking change, any code using the old ssh.execute() will need to be rewritten.

Fixed

  • A cause of segfaults was fixed by storing callbacks properly, so they don't get garbage collected accidentally (#2).

v0.1.0 - 2024-01-29

The initial release 🎉 ✨

Added