fix(ios): support None as an SSH tunnel auth method#1931
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e016d3a031
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| case privateKey | ||
| case sshAgent | ||
| case keyboardInteractive | ||
| case none |
There was a problem hiding this comment.
Render None as None in the iOS tunnel summary
When a synced or imported connection uses this newly supported .none value, ConnectionInfoView.swift:107 treats every non-password method as "Private Key". The tunnel can now authenticate successfully without a key, but its connection details misleadingly report Private Key; add an explicit None display case (and ideally handle the other enum cases rather than collapsing them).
Useful? React with 👍 / 👎.
Summary
Adds iOS parity for the None SSH tunnel auth method.
The None method (for hosts like Tailscale SSH that handle authentication themselves) shipped on macOS in v0.59.0 (#1907, #1909). The iOS app models SSH config with a separate type that was never taught the case, so a macOS connection using None, once synced to iOS, silently decoded to Password and then failed to connect with a misleading "No SSH password provided."
Changes
iOS now honors None SSH tunnels. iOS uses libssh2 too, so this is real support rather than a clean error:
SSHConfiguration(TableProModels): add the.nonecase and decode"none"/"None".SSHTunnel: addauthenticateNone, mirroring the macOSNoneAuthenticatorsequence (libssh2_userauth_listthenlibssh2_userauth_authenticated).SSHTunnelFactory: dispatch.none.IOSConnectionImportService: map"none"when importing a.tableprofile.Tests:
SSHAuthMethod.supportsTwoFactorAuthentication(same behavior, now testable) and cover it inTableProTests..none: the macOS and lowercase raw values, an encode/decode round trip, and the unknown-value fallback to Password.Testing
swift test --filter SSHConfigurationTests: 4/4 pass.swiftlint lint --strict: clean on changed in-scope files.Notes
check-mode caveat (that mode rejectsnone).Ref #1912