summaryrefslogtreecommitdiff
path: root/internal/ssh/client/authmethods.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/ssh/client/authmethods.go')
-rw-r--r--internal/ssh/client/authmethods.go24
1 files changed, 18 insertions, 6 deletions
diff --git a/internal/ssh/client/authmethods.go b/internal/ssh/client/authmethods.go
index 967866f..44c5601 100644
--- a/internal/ssh/client/authmethods.go
+++ b/internal/ssh/client/authmethods.go
@@ -1,18 +1,30 @@
package client
import (
+ "os"
+
"github.com/mimecast/dtail/internal/config"
"github.com/mimecast/dtail/internal/io/logger"
"github.com/mimecast/dtail/internal/ssh"
- "os"
gossh "golang.org/x/crypto/ssh"
)
-// InitSSHAuthMethods initialises all known SSH auth methods on othe client side.
-func InitSSHAuthMethods(trustAllHosts bool, throttleCh chan struct{}) ([]gossh.AuthMethod, *HostKeyCallback) {
- var sshAuthMethods []gossh.AuthMethod
+// InitSSHAuthMethods initialises all known SSH auth methods on the client side.
+func InitSSHAuthMethods(sshAuthMethods []gossh.AuthMethod, hostKeyCallback gossh.HostKeyCallback, trustAllHosts bool, throttleCh chan struct{}) ([]gossh.AuthMethod, HostKeyCallback) {
+ if len(sshAuthMethods) > 0 {
+ simpleCallback, err := NewSimpleCallback()
+ if err != nil {
+ logger.FatalExit(err)
+ }
+ return sshAuthMethods, simpleCallback
+ }
+
+ return initKnownHostsAuthMethods(trustAllHosts, throttleCh)
+}
+func initKnownHostsAuthMethods(trustAllHosts bool, throttleCh chan struct{}) ([]gossh.AuthMethod, HostKeyCallback) {
+ var sshAuthMethods []gossh.AuthMethod
if config.Common.ExperimentalFeaturesEnable {
sshAuthMethods = append(sshAuthMethods, gossh.Password("experimental feature test"))
logger.Info("Added experimental method to list of auth methods")
@@ -36,10 +48,10 @@ func InitSSHAuthMethods(trustAllHosts bool, throttleCh chan struct{}) ([]gossh.A
}
knownHostsPath := os.Getenv("HOME") + "/.ssh/known_hosts"
- hostKeyCallback, err := NewHostKeyCallback(knownHostsPath, trustAllHosts, throttleCh)
+ knownHostsCallback, err := NewKnownHostsCallback(knownHostsPath, trustAllHosts, throttleCh)
if err != nil {
logger.FatalExit(knownHostsPath, err)
}
- return sshAuthMethods, hostKeyCallback
+ return sshAuthMethods, knownHostsCallback
}