From 6b2e43bb5e24d9222f3b758297381c3c5ef6dbb3 Mon Sep 17 00:00:00 2001 From: apokalyptik Date: Mon, 11 Jan 2021 09:15:29 -0800 Subject: [PATCH] Allow multiple host keys to be loaded by specifying a globbable path (#61) --- sshpiperd/sshpiperd.go | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/sshpiperd/sshpiperd.go b/sshpiperd/sshpiperd.go index b40d80c9..f82501a0 100644 --- a/sshpiperd/sshpiperd.go +++ b/sshpiperd/sshpiperd.go @@ -4,6 +4,7 @@ import ( "fmt" "io/ioutil" "net" + "path/filepath" "time" "golang.org/x/crypto/ssh" @@ -134,17 +135,26 @@ func startPiper(config *piperdConfig, logger *log.Logger) error { } // listeners - privateBytes, err := ioutil.ReadFile(config.PiperKeyFile) + privateKeys, err := filepath.Glob(config.PiperKeyFile) if err != nil { return err } - private, err := ssh.ParsePrivateKey(privateBytes) - if err != nil { - return err - } + logger.Println("Found host keys", privateKeys) + for _, privateKey := range privateKeys { + logger.Println("Loading host key", privateKey) + privateBytes, err := ioutil.ReadFile(privateKey) + if err != nil { + return err + } - piper.AddHostKey(private) + private, err := ssh.ParsePrivateKey(privateBytes) + if err != nil { + return err + } + + piper.AddHostKey(private) + } listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", config.ListenAddr, config.Port)) if err != nil {