toolbox: ensure SSH keys are loaded

Ensure `kops toolbox enroll` verify if SSH keys are loaded before
authenticate to the host.

Signed-off-by: Arnaud Meukam <ameukam@gmail.com>
This commit is contained in:
Arnaud Meukam 2025-04-07 22:15:06 +02:00
parent 38faafb8ba
commit 3ee34d37d9
No known key found for this signature in database
1 changed files with 10 additions and 0 deletions

View File

@ -261,6 +261,16 @@ func NewSSHHost(ctx context.Context, host string, sshPort int, sshUser string, s
agentClient := agent.NewClient(conn) agentClient := agent.NewClient(conn)
signers, err := agentClient.Signers()
if err != nil {
_ = conn.Close()
return nil, fmt.Errorf("failed to get signers: %w", err)
}
if len(signers) == 0 {
return nil, fmt.Errorf("SSH agent has no keys")
}
sshConfig := &ssh.ClientConfig{ sshConfig := &ssh.ClientConfig{
HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error { HostKeyCallback: func(hostname string, remote net.Addr, key ssh.PublicKey) error {
klog.Warningf("accepting SSH key %v for %q", key, hostname) klog.Warningf("accepting SSH key %v for %q", key, hostname)