summaryrefslogtreecommitdiff
path: root/internal/ssh
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2021-10-21 21:00:47 +0300
committerPaul Buetow <pbuetow@mimecast.com>2021-10-21 21:00:47 +0300
commit0908282e8b3c09f603fd4083fd7f075c4535e939 (patch)
treebfec85a4a76628a4a24c03c332c6110469d4efa9 /internal/ssh
parent3b7f00d76d70169d9829ed462bd9eb99d6900ddd (diff)
backport ECDSA key support form master
Diffstat (limited to 'internal/ssh')
-rw-r--r--internal/ssh/client/authmethods.go38
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.