SSH Agent Forwarding
Use Zync's consent-based virtual SSH agent for downstream connections without copying private keys to a jump host.
SSH agent forwarding lets a host you connect to use your local SSH key for a downstream connection. For example, a bastion can authenticate to a private Git repository or an internal server without the private key being copied to the bastion.
Zync uses a consent-based virtual agent. Forwarding is off by default, each connection forwards one explicitly selected key, and every signing request requires approval.
Enable forwarding for a connection
Section titled “Enable forwarding for a connection”- Open the connection’s edit form.
- Expand Advanced (Optional).
- Enable Forward an SSH key.
- Select the connection authentication key or another saved connection key that is available for forwarding.
- Save the connection and reconnect if it is already open.
The key selector is disabled when no eligible private key is available. Password authentication cannot be forwarded. Direct standalone Vault keys are not yet selectable unless they are attached to a saved connection.
Use the forwarded key
Section titled “Use the forwarded key”Connect to the configured host, then use its terminal to start a downstream SSH or Git operation:
# Run on the connected bastionssh git.internal.examplegit clone git@github.com:example/private-repository.gitWhen the downstream host requests a signature, Zync pauses the request and shows the consent dialog. The remote host can receive the forwarded public identity, but Zync computes signatures locally and returns only the signature response.
Approve or deny a signature
Section titled “Approve or deny a signature”The consent dialog shows the requesting connection, user, and key fingerprint. It also warns that Zync cannot verify the ultimate downstream destination beyond the immediate SSH connection.
- Allow once approves the current signature challenge only.
- Allow for connection allows signature requests for the current SSH session. The approval is held in memory and is cleared when that connection terminates.
- Deny rejects the request.
Unanswered prompts expire after 30 seconds and are denied automatically. A denial or timeout returns an SSH agent failure to the requesting host, so the downstream authentication fails without exposing the key.
Security behavior
Section titled “Security behavior”Zync enforces these boundaries:
- Forwarding is scoped to the connection id. One connection cannot use another connection’s assigned key.
- Identity listing exposes public key bytes only, with no private key material.
- Private keys are never copied to the remote host and are decrypted in memory only when signing with a Vault-backed key.
- Passwords are not forwarded.
- Session-wide approvals are in-memory and disappear on disconnect.
These controls reduce the exposure of a traditional unrestricted ssh -A agent, but they do not make an untrusted jump host safe. The host can still request signatures during an approved session, and a signature may authenticate an action you did not intend if you approve it without checking the context.
Troubleshooting
Section titled “Troubleshooting”- The option is unavailable: Add or import a private key for the connection, or use a saved connection that has an eligible key.
- No prompt appears: Confirm forwarding is enabled on the connection that owns the active SSH session, then reconnect.
- The request timed out: The 30-second consent window expired. Retry the downstream operation and approve promptly if it is expected.
- Authentication is denied: Check the displayed fingerprint, the downstream account, and the server’s accepted key list. A denied request is not retried silently.
- A session approval disappeared: This is expected after disconnect. Session approvals are not persisted.
For connection authentication and key storage details, see Connections and Vault.