Repository navigation
SSH2FA v1.0.3
Highlights
Self-healing daemon connection
Fixes the case where the app showed "Daemon is slow to respond" and stayed
stuck until you manually quit and reopened it — even though the background
helper was perfectly healthy the whole time.
- The real cause was a dropped connection the app never noticed: after sleep
a unix socket can go silently half-open (the OS never reports it), and if the
app happened to start while the helper was restarting, it never established a
connection at all. Either way the app sat there timing out forever. - Now the poll is treated as a heartbeat: after a few consecutive misses the app
tears down the dead connection and reconnects on its own, in both cases.
Clearer status messages
The old connection banners were confusing and often blamed the wrong thing
("daemon" is jargon, and the daemon was usually fine). Reworded the whole family
in plain language and to say what's actually happening:
- "Daemon is slow to respond / disconnected — retrying…" → "Reconnecting to
the background helper…" - "Daemon unreachable — is ssh2fa-daemon running?" → "Connecting to the
background helper…" - "Daemon lost" / "Daemon reconnected" → "Connection lost" / "Reconnected"
- Settings "Restart daemon" → "Restart background helper"
Install
Un-notarized build, so macOS Gatekeeper needs one extra step:
Homebrew (recommended):
brew install --cask gasvn/tap/ssh2fa && xattr -dr com.apple.quarantine /Applications/SSH2FA.app && open /Applications/SSH2FA.app
(already installed? brew reinstall --cask gasvn/tap/ssh2fa)
Manual: download the DMG → drag to Applications → System Settings → Privacy & Security → "Open Anyway".
Requires macOS 26. You'll need your 2FA secret key (TOTP setup key) — SSH2FA types the codes; it does not work with Duo Push.