Changelog

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

Unreleased

Changed

  • Made the finalizers for Session, SshChannel, and SftpSession slightly more robust. It's still not recommended to rely on them to clean up all resources but in most cases they should be able to do so (#31).

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