Revision history for Rex-LibSSH

0.004     2026-09-20 18:54:48Z
  - SECURITY: the server host key is now verified against known_hosts by
    default (CWE-322, reported privately via CPANSec). Previously
    Rex::Interface::Connection::LibSSH hardcoded strict_hostkeycheck => 0
    and ignored the strict_hostkeycheck/knownhosts connect options, so the
    documented opt-in never did anything and any server -- including a
    man-in-the-middle -- was accepted. An unknown or changed key now fails
    the connection before authentication. Opt out per connection with
    strict_hostkeycheck => 0, or Rexfile-wide with
    -feature => ['disable_strict_host_key_checking'] (the same flag the
    OpenSSH backend honours); knownhosts => $file and
    Rex::Config->set_openssh_opt(UserKnownHostsFile => $file) select the
    file. Hosts that were never added to known_hosts (fresh Hetzner
    installs) must be ssh-keyscan'ed first or use the opt-out
  - Requires Net::LibSSH 0.004, whose connect() performs the check

0.003     2026-09-01 00:07:32Z
  - exec() now matches the 3-arg signature Rex::Commands::Run invokes
    ($cmd, $path, $option), so env hashes and shell options actually
    reach the SSH channel.
  - Reject paths containing NUL bytes in _q() and shell metacharacters
    in glob() patterns; the latter closes an injection vector through
    the remote shell expansion step that other paths avoid by being
    quoted.
  - Add t/04-no-sftp.t and t/lib/TestSSHDNoSFTP.pm to prove every
    Fs/File operation works against an sshd without a Subsystem sftp
    line — the environment this distribution was built for.
  - Document that Fs::LibSSH never routes through Rex::Interface::Fs::Sudo
    (known limitation, not a bug) and that upload/download/read-mode open
    hold the whole file in memory on both ends.

0.002     2026-03-29 04:09:31Z
  - Reset session timeout to 0 after connect to allow long-running commands

0.001     2026-03-29 02:55:49Z
  - Initial release
  - Rex::Interface::Connection::LibSSH — SSH connection via Net::LibSSH
  - Rex::Interface::Exec::LibSSH — command execution via SSH exec channels
  - Rex::Interface::Fs::LibSSH — filesystem operations without SFTP
  - Rex::Interface::File::LibSSH — file read/write via exec channels
