Repository navigation
SSH2FA v1.5.1
简体中文 / Simplified Chinese
The interface is now fully localized. 380 strings, including the runtime status
and error text (connection state, ssh failure explanations, Keychain guidance) —
that text is built as plain String, so it was invisible to string extraction
and would have stayed English no matter how complete the catalog looked.
Set it per-app in System Settings → General → Language & Region → Applications.
macOS stops asking for every saved password
Credentials lived in two Keychain items per host. macOS asks permission per
item whenever the reading binary's identity changes — which it does on every
release, because the background helper is separately signed. Six hosts meant
twelve "Always Allow" prompts after each update.
They now live in a single item, folded in automatically the first time the old
ones are read (so the migration costs no extra prompt). After this update you
authorize once, not once per host.
Mounts are usable now
- Pin the folders you work in. Mounting takes you straight there instead of
to the filesystem root.⋯ → Mountlists them; also in the menu bar and⌘K. - Browse to a folder instead of typing an absolute remote path — over the
connection you already have, so no extra login. - Auto-mount a pinned folder the moment its host connects.
- Several folders at once per host, each at
~/Mounts/<host>/<folder>. - Opens in Finder after mounting.
- Force-unmount for when the network dropped and Finder is beachballing on a
wedged mount.
See and change what's stored
Every host has a Password & setup view: where the alias points, whether a
password and 2FA secret are saved, which account the secret belongs to. Reveal
them behind Touch ID, replace either after a server password change or a 2FA
re-enrolment, and verify with Test login. Hosts can also be removed now —
previously they could only be added.
Copied secrets stay on this Mac (no Universal Clipboard hand-off to your other
devices) and clear themselves after 45 seconds.
Fixes
- Updating no longer drops your connections. The app restarted the helper
withlaunchctl kickstart -k, whose SIGTERM triggers a graceful shutdown that
closes every ControlMaster — so every update forced a fresh 2FA on every host. - The app could stop reconnecting for good. After roughly four minutes of an
unreachable helper it gave up permanently, sitting on "Reconnecting…" with a
healthy helper on the other end until relaunched. - Tunnel ports are editable, keeping the tunnel's tags, post-connect hook and
URL suffix (changing them used to mean delete-and-recreate). - Keychain errors say what to do about them instead of showing raw internal text.
- VoiceOver labels on icon-only buttons.
Install
brew install --cask gasvn/tap/ssh2fa \
&& xattr -dr com.apple.quarantine /Applications/SSH2FA.app \
&& open /Applications/SSH2FA.appAlready installed? brew reinstall --cask ssh2fa, or download the DMG below.
Signed but not notarized, so macOS quarantines it on download — the xattr line
clears that, or use System Settings → Privacy & Security → "Open Anyway".
Universal (Apple Silicon + Intel). Requires macOS 26.