mirror of
https://github.com/stablyai/orca.git
synced 2026-10-30 16:47:34 +00:00
* fix(ssh): expand %d and other tokens in ssh -G IdentityFile paths OpenSSH prints IdentityFile values from `ssh -G` with their percent tokens unexpanded (it expands them only at connect time), so a config line like `IdentityFile %d/keys/work.pem` reached Orca as a literal relative path. The key was silently skipped and the connection fell back to a password prompt even though plain `ssh <alias>` worked. Expand the tokens OpenSSH supports for IdentityFile that can be derived locally or from the ssh -G output (%%, %d, %u, %i, %l, %L, %h, %n, %p, %r). Paths with tokens that need OpenSSH internals (%C, %j, %k) are left unchanged. A configured, non-default identity file that does not exist is now named in the auth error instead of being skipped silently. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * test(ssh): reproduce #33849 end to end and keep tests off the real ~/.ssh Adds a Docker e2e: a host from ~/.ssh/config whose IdentityFile uses %r and %p connects with that key. It fails on v1.4.241 and passes with the token expansion. Drops a unit assertion that read the real ~/.ssh/id_xmss. * fix(ssh): expand ${NAME} in ssh -G IdentityFile paths too ssh -G also prints IdentityFile's ${NAME} environment references unexpanded, so a key at ${KEYS}/work.pem fell back to a password prompt in the same way as #33849's %d. Expand the braced form first, and keep the raw path when the variable is unset, as OpenSSH refuses it. --------- Co-authored-by: william <wanglv93@gmail.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>