Skip to content

v0.23.14

Choose a tag to compare

@github-actions github-actions released this 15 Oct 13:56
· 8 commits to main since this release

What's Changed

Fixed

  • Password login no longer fails on servers that offer both keyboard-interactive and password (issue #382) — when a server advertised keyboard-interactive and password authentication, a password-based SSH connection would fail with Permission denied even though the password was correct. OpenSSH counts NumberOfPasswordPrompts per method, so it invoked the SSH_ASKPASS helper twice — once per method — against the same secret-file path, but the generated helper script deleted the secret file (rm -f) immediately after its first read. The second invocation then found no file and emitted an empty password. This is a regression surfaced by the keyboard-interactive support added for ESXi in 0.23.13 (#364), which made the two-method case reachable. The in-script delete is removed: the helper now only reads the file, and cleanup is already owned by the child-exit watcher (watch_child_exit removes every registered secret path when the ssh process exits) with the file living in a user-private $XDG_RUNTIME_DIR (tmpfs, mode 0600) — so dropping the rm -f costs no security. The fix is in the shared askpass_script_contents, so it covers the target-account helper and every jump-host (bastion) helper identically; a new regression test runs the generated helper twice against one secret file (for the target and jump-hop env vars) and asserts both invocations emit the password and the file survives. (rustconn/src/window/protocols_ssh.rs)

Changed

  • Development toolchain pinned to Rust 1.99.0 (was 1.97.1) — the rust-toolchain.toml channel and the RUST_TOOLCHAIN env in both CI workflows (ci.yml, release.yml) move together, kept in step by the existing hygiene drift gate. MSRV is unchanged and still 1.95: the msrv CI job, the MSRV-built RPM and the snap each keep their deliberate RUSTUP_TOOLCHAIN=1.95 override. OBS compiles with the stable toolchain its build VM vendors (scripts/obs-publish.sh copies rustc --print sysroot), so it picks up 1.99 as the OBS stable repos reach it — no pin to move there. The bump surfaced two newly-stabilised clippy lints: needless_borrows_for_generic_args (5 sites in rustconn-core/src/import/csv_import.rs, fixed by dropping a redundant & on a Copy closure passed to Option::and_then) and assert_is_empty (225 sites, almost all test assertions). The latter is a style lint whose rewrite (assert_eq!(x, [] as [T; 0])) is type-specific noise that would force Debug/PartialEq onto types for test cosmetics only, so it is allowed workspace-wide with a reason in [workspace.lints.clippy], consistent with the other pedantic/nursery lints the project already suppresses. (rust-toolchain.toml, .github/workflows/ci.yml, .github/workflows/release.yml, Cargo.toml, rustconn-core/src/import/csv_import.rs)

Dependencies

  • Updated: inout 0.2.2 → 0.2.3. A semver-compatible transitive patch bump; no security advisories affected (cargo deny check advisories clean). CLI download versions all current (TigerVNC pinned at 1.16.2, confirmed latest upstream); the RustCrypto release-candidate family and the out-of-range majors remain held back, pinned transitively by the sspi/picky-krb stack exactly as in 0.23.1–0.23.13. The Flatpak/Flathub manifests are in sync (GNOME runtime 51, FreeRDP 3.32.1, cJSON 1.7.19, OpenH264 2.6.0).

Installation

Flatpak (Recommended)

flatpak install flathub io.github.totoshko88.RustConn

Snap

sudo snap install rustconn

Debian/Ubuntu (.deb from this release)

sudo dpkg -i rustconn_0.23.14_amd64.deb
sudo apt-get install -f  # Install dependencies if needed

Fedora (.rpm from this release)

sudo dnf install rustconn-0.23.14-1.fc44.x86_64.rpm

AppImage

chmod +x RustConn-0.23.14-x86_64.AppImage
./RustConn-0.23.14-x86_64.AppImage

macOS (Homebrew)

brew tap totoshko88/rustconn
brew install rustconn
open $(brew --prefix)/opt/rustconn/RustConn.app

All dependencies (GTK4, libadwaita, VTE, Adwaita icons) are installed automatically.
Requires macOS 13 (Ventura) or later.

OBS Repositories

Packages available at: https://build.opensuse.org/package/show/home:totoshko88:rustconn/rustconn

# Debian 13 (Trixie)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Debian_13/ /' \
  | sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Debian_13/Release.key \
  | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn

# Ubuntu 24.04 LTS (Noble)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_24.04/ /' \
  | sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_24.04/Release.key \
  | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn

# Ubuntu 26.04 LTS (Resolute)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_26.04/ /' \
  | sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_26.04/Release.key \
  | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn

# Fedora 44
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Fedora_44/home:totoshko88:rustconn.repo
sudo dnf install rustconn

# Fedora 43
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Fedora_43/home:totoshko88:rustconn.repo
sudo dnf install rustconn

# openSUSE Tumbleweed
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Tumbleweed/ rustconn
sudo zypper ref && sudo zypper in rustconn

# openSUSE Leap 16.0
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Leap_16.0/ rustconn
sudo zypper ref && sudo zypper in rustconn

Arch Linux (AUR)

yay -S rustconn

FreeBSD (Ports)

pkg install rustconn

Full installation guide: https://github.com/totoshko88/RustConn/blob/main/docs/INSTALL.md

Verifying your download

Every binary on this release (deb, rpm, AppImage, Flatpak) is covered two ways.

Plain checksums — download SHA256SUMS alongside the asset, then:

sha256sum -c SHA256SUMS

Signed build provenance (SLSA, via Sigstore) — proves the file was built by this
workflow from this commit:

gh attestation verify RustConn-0.23.14-x86_64.AppImage --repo totoshko88/RustConn

(The snap is signed by the Snap Store; the macOS build is delivered via the Homebrew tap.)