go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/connection/ssh/signers/ssh_agent.go (about) 1 // Copyright (c) Mondoo, Inc. 2 // SPDX-License-Identifier: BUSL-1.1 3 4 package signers 5 6 import ( 7 "net" 8 "os" 9 10 "github.com/rs/zerolog/log" 11 "golang.org/x/crypto/ssh" 12 "golang.org/x/crypto/ssh/agent" 13 ) 14 15 func GetSignersFromSSHAgent() []ssh.Signer { 16 signers := []ssh.Signer{} 17 18 if sshAgentConn, err := net.Dial("unix", os.Getenv("SSH_AUTH_SOCK")); err == nil { 19 log.Debug().Str("socket", os.Getenv("SSH_AUTH_SOCK")).Msg("ssh agent socket found") 20 sshAgentClient := agent.NewClient(sshAgentConn) 21 sshAgentSigners, err := sshAgentClient.Signers() 22 if err == nil && len(sshAgentSigners) == 0 { 23 log.Warn().Msg("could not find keys in ssh agent") 24 } else if err == nil { 25 signers = append(signers, sshAgentSigners...) 26 } else { 27 log.Error().Err(err).Msg("could not get public keys from ssh agent") 28 } 29 } else { 30 log.Debug().Msg("could not find valid ssh agent authentication") 31 } 32 return signers 33 }