feat: support for identityfiles to select keys from ssh-agent - #355
Merged
Conversation
shreddedbacon
force-pushed
the
ssh-agent-identity
branch
2 times, most recently
from
June 14, 2024 01:16
298aebc to
6866c37
Compare
Member
|
Sorry I know I wasn't requested for a review, but I think the public key comparison could be made a bit more robust by using the library parsing functions. Something like this? var identities []ssh.PublicKey
for _, idFile := range publicKeyIdentityFiles {
keybytes, _ := os.ReadFile(idFile)
pubkey, _ := ssh.ParsePublicKey(keybytes)
identities = append(identities, pubkey)
}
for _, signer := range agentSigners {
for _, identity := range identities {
if bytes.Equal(signer.PublicKey().Marshal(), identity.Marshal()) {
// found a match
}
}
} |
shreddedbacon
force-pushed
the
ssh-agent-identity
branch
from
June 14, 2024 04:41
6866c37 to
e211f51
Compare
rocketeerbkw
requested changes
Jun 17, 2024
rocketeerbkw
left a comment
Member
There was a problem hiding this comment.
I pasted the wrong path for my public key and got this error:
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x8e5c63]
goroutine 1 [running]:
github.com/uselagoon/lagoon-cli/cmd.publicKey({0xc000267de0, 0x19}, {0x0, 0x0}, {0xc00023d090, 0x1, 0x9fd275?}, 0x5?)
/home/brandon/dev/amazee-io/lagoon-cli/cmd/login.go:56 +0x8c3I immediately knew it was a spelling error, but not everyone will, can you add a "file exists" check similar to how -i has?
Otherwise, this works to use a single key from the ssh-agent as described 🎉
shreddedbacon
force-pushed
the
ssh-agent-identity
branch
from
June 17, 2024 21:42
e211f51 to
472c80d
Compare
shreddedbacon
marked this pull request as ready for review
June 17, 2024 21:44
shreddedbacon
force-pushed
the
ssh-agent-identity
branch
5 times, most recently
from
June 24, 2024 01:08
304e268 to
9077aa1
Compare
Member
Author
|
Updated with file check error handling, so I'll merge this now @rocketeerbkw ? |
shreddedbacon
force-pushed
the
ssh-agent-identity
branch
from
June 26, 2024 00:06
9077aa1 to
8033538
Compare
rocketeerbkw
approved these changes
Jun 27, 2024
rocketeerbkw
left a comment
Member
There was a problem hiding this comment.
Got an error message for bad file path, and using the specified key still works 👍
3 tasks
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.
General Checklist
This adds support for publickey identities to the config file, which allows for these to select a key if it is found in the ssh-agent
A flag can be provided too
--ssh-publickey /full/path/to/key.pubwhich will override anything defined in configurationAdditionally, a global
--verboseflag is added which can be used to print some verbose output to stderr, this could be used elsewhere in the CLI in the future too. In this PR the flag will print which key is being used or if the agent is being used, which can help users with debugging.Worth noting, once #319 is finalized, keycloak authentication will be the preferred method for authenticating the CLI to get a token, leaving these identity files to only be used for the
sshaspect the CLI provides. But they can still be used for authenticating to get a token via the SSH service still.Closing issues
closes #354