feat(ssh): wire CertificateFile for certificate-based authentication#377
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds support for SSH certificate-based authentication by detecting and loading user certificates associated with configured identity keys, ensuring certificates are attempted before falling back to the raw key signer. This aligns rig’s SSH behavior more closely with OpenSSH’s IdentityFile + implicit -cert.pub convention and CertificateFile directives.
Changes:
- Added
certSignerForSignerto discover and validate matching SSH user certificates (implicit<key>-cert.pub, thenCertificateFile). - Updated key-signer loading to prepend a certificate-backed signer ahead of the plain key signer when a matching cert is found.
- Added unit tests covering implicit/explicit cert discovery, mismatch handling, missing files, and signer ordering.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
protocol/ssh/connection.go |
Adds certificate discovery + cert-signer creation and wires it into key signer ordering. |
protocol/ssh/connection_test.go |
Adds tests for certificate matching behavior and priority ordering in loadKeySigners. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
f739b3a to
7816940
Compare
7816940 to
1f53356
Compare
1f53356 to
3a96068
Compare
For each identity file, also load the implicit <path>-cert.pub and any explicit CertificateFile entries from sshconfig. When a matching cert is found, a cert signer is offered before the plain key signer so certificate auth is tried first with the plain key as fallback. Signed-off-by: Kimmo Lehto <klehto@mirantis.com>
Signed-off-by: Kimmo Lehto <klehto@mirantis.com>
3a96068 to
1fa9638
Compare
Signed-off-by: Kimmo Lehto <klehto@mirantis.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
For each identity file, also load the implicit -cert.pub and any explicit CertificateFile entries from sshconfig. When a matching cert is found, a cert signer is offered before the plain key signer so certificate auth is tried first with the plain key as fallback.