diff options
| author | Paul Buetow <pbuetow@mimecast.com> | 2021-10-21 21:00:47 +0300 |
|---|---|---|
| committer | Paul Buetow <pbuetow@mimecast.com> | 2021-10-21 21:00:47 +0300 |
| commit | 0908282e8b3c09f603fd4083fd7f075c4535e939 (patch) | |
| tree | bfec85a4a76628a4a24c03c332c6110469d4efa9 /internal/ssh | |
| parent | 3b7f00d76d70169d9829ed462bd9eb99d6900ddd (diff) | |
backport ECDSA key support form master
Diffstat (limited to 'internal/ssh')
| -rw-r--r-- | internal/ssh/client/authmethods.go | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/internal/ssh/client/authmethods.go b/internal/ssh/client/authmethods.go index 089a66a..b1e514d 100644 --- a/internal/ssh/client/authmethods.go +++ b/internal/ssh/client/authmethods.go @@ -18,7 +18,7 @@ func InitSSHAuthMethods(sshAuthMethods []gossh.AuthMethod, if len(sshAuthMethods) > 0 { simpleCallback, err := NewSimpleCallback() if err != nil { - dlog.Common.FatalPanic(err) + dlog.Client.FatalPanic(err) } return sshAuthMethods, simpleCallback } @@ -33,12 +33,12 @@ func initKnownHostsAuthMethods(trustAllHosts bool, throttleCh chan struct{}, knownHostsCallback, err := NewKnownHostsCallback(knownHostsPath, trustAllHosts, throttleCh) if err != nil { - dlog.Common.FatalPanic(knownHostsPath, err) + dlog.Client.FatalPanic(knownHostsPath, err) } - dlog.Common.Debug("initKnownHostsAuthMethods", "Added known hosts file path", knownHostsPath) - if config.Common.ExperimentalFeaturesEnable { + dlog.Client.Debug("initKnownHostsAuthMethods", "Added known hosts file path", knownHostsPath) + if config.Client.ExperimentalFeaturesEnable { sshAuthMethods = append(sshAuthMethods, gossh.Password("experimental feature test")) - dlog.Common.Debug("initKnownHostsAuthMethods", "Added experimental method to list of auth methods") + dlog.Client.Debug("initKnownHostsAuthMethods", "Added experimental method to list of auth methods") } // First try to read custom private key path. @@ -46,23 +46,23 @@ func initKnownHostsAuthMethods(trustAllHosts bool, throttleCh chan struct{}, authMethod, err := ssh.PrivateKey(privateKeyPath) if err == nil { sshAuthMethods = append(sshAuthMethods, authMethod) - dlog.Common.Debug("initKnownHostsAuthMethods", + dlog.Client.Debug("initKnownHostsAuthMethods", "Added path to list of auth methods, not adding further methods", privateKeyPath) return sshAuthMethods, knownHostsCallback } - dlog.Common.FatalPanic("Unable to use private SSH key", privateKeyPath, err) + dlog.Client.FatalPanic("Unable to use private SSH key", privateKeyPath, err) } // Second, try SSH Agent authMethod, err := ssh.Agent() if err == nil { sshAuthMethods = append(sshAuthMethods, authMethod) - dlog.Common.Debug("initKnownHostsAuthMethods", "Added SSH Agent (SSH_AUTH_SOCK)"+ + dlog.Client.Debug("initKnownHostsAuthMethods", "Added SSH Agent (SSH_AUTH_SOCK)"+ "to list of auth methods, not adding further methods") return sshAuthMethods, knownHostsCallback } - dlog.Common.Debug("initKnownHostsAuthMethods", + dlog.Client.Debug("initKnownHostsAuthMethods", "Unable to init SSH Agent auth method", err) // Third, try Linux/UNIX default key paths @@ -70,27 +70,37 @@ func initKnownHostsAuthMethods(trustAllHosts bool, throttleCh chan struct{}, authMethod, err = ssh.PrivateKey(privateKeyPath) if err == nil { sshAuthMethods = append(sshAuthMethods, authMethod) - dlog.Common.Debug("initKnownHostsAuthmethods", + dlog.Client.Debug("initKnownHostsAuthmethods", "Added path to list of auth methods, not adding further methods", privateKeyPath) return sshAuthMethods, knownHostsCallback } - dlog.Common.Debug("initKnownHostsAuthMethods", "Unable to use private key", + dlog.Client.Debug("initKnownHostsAuthMethods", "Unable to use private key", privateKeyPath, err) privateKeyPath = os.Getenv("HOME") + "/.ssh/id_dsa" authMethod, err = ssh.PrivateKey(privateKeyPath) if err == nil { sshAuthMethods = append(sshAuthMethods, authMethod) - dlog.Common.Debug("initKnownHostsAuthmethods", + dlog.Client.Debug("initKnownHostsAuthmethods", "Added path to list of auth methods, not adding further methods", privateKeyPath) return sshAuthMethods, knownHostsCallback } - dlog.Common.Debug("initKnownHostsAuthMethods", "Unable to use private key", + + privateKeyPath = os.Getenv("HOME") + "/.ssh/id_ecdsa" + authMethod, err = ssh.PrivateKey(privateKeyPath) + if err == nil { + sshAuthMethods = append(sshAuthMethods, authMethod) + dlog.Client.Debug("initKnownHostsAuthmethods", + "Added path to list of auth methods, not adding further methods", privateKeyPath) + return sshAuthMethods, knownHostsCallback + } + + dlog.Client.Debug("initKnownHostsAuthMethods", "Unable to use private key", privateKeyPath, err) // This is only a panic when we expect to do something about it. if !config.Client.SSHDontAddHostsToKnownHostsFile { - dlog.Common.FatalPanic("Unable to find private SSH key information") + dlog.Client.FatalPanic("Unable to find private SSH key information") } // Never reach this point. |
