From 6f10a041de01b782a281c36b2c1b9f8d4f219756 Mon Sep 17 00:00:00 2001 From: Randall Winkhart Date: Wed, 15 May 2024 17:12:09 -0400 Subject: [PATCH] Check against ~/.ssh/known_hosts --- src/backend/1globals.go | 2 +- src/backend/2globalsUNIX.go | 4 ++-- src/sync/client.go | 10 +++++++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/backend/1globals.go b/src/backend/1globals.go index 47cc873..cd816e6 100644 --- a/src/backend/1globals.go +++ b/src/backend/1globals.go @@ -6,7 +6,7 @@ import ( // global variables used across multiple files var ( - home, _ = os.UserHomeDir() + Home, _ = os.UserHomeDir() ) // global constants used across multiple files diff --git a/src/backend/2globalsUNIX.go b/src/backend/2globalsUNIX.go index a6cf714..4b645c4 100644 --- a/src/backend/2globalsUNIX.go +++ b/src/backend/2globalsUNIX.go @@ -3,8 +3,8 @@ package backend // EntryRoot path to libmutton entry directory -var EntryRoot = home + "/.local/share/libmutton" -var ConfigDir = home + "/.config/libmutton" +var EntryRoot = Home + "/.local/share/libmutton" +var ConfigDir = Home + "/.config/libmutton" var ConfigPath = ConfigDir + "/libmutton.ini" // PathSeparator defines the character used to separate directories in a path (platform-specific) diff --git a/src/sync/client.go b/src/sync/client.go index df6f1fc..a8f1539 100644 --- a/src/sync/client.go +++ b/src/sync/client.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/rwinkhart/MUTN/src/backend" "golang.org/x/crypto/ssh" + "golang.org/x/crypto/ssh/knownhosts" "os" "strconv" "strings" @@ -46,14 +47,21 @@ func getSSHOutput(cmd string, manualSync bool) string { os.Exit(1) } + // read known hosts file + hostKeyCallback, err := knownhosts.New(backend.Home + "/.ssh/known_hosts") + if err != nil { + fmt.Println(backend.AnsiError + "Sync failed - Unable to read known hosts file:" + err.Error() + backend.AnsiReset) + os.Exit(1) + } + // configure SSH client sshConfig := &ssh.ClientConfig{ User: user, Auth: []ssh.AuthMethod{ ssh.PublicKeys(parsedKey), }, + HostKeyCallback: hostKeyCallback, } - sshConfig.HostKeyCallback = ssh.InsecureIgnoreHostKey() // TODO remove // connect to SSH server sshClient, err := ssh.Dial("tcp", ip+":"+port, sshConfig)