summaryrefslogtreecommitdiff
path: root/ssh/server/hostkey.go
diff options
context:
space:
mode:
authorPaul Bütow <pbuetow@mimecast.com>2020-01-09 20:30:15 +0000
committerPaul Bütow <pbuetow@mimecast.com>2020-01-09 20:30:15 +0000
commit3755a9911ecb05886577095f2b8cc8b9e4066a3a (patch)
tree86e24bc466986cb5c9c6d167a918e6064defeafc /ssh/server/hostkey.go
Release of DTail v1.0.0v1.0.0
Diffstat (limited to 'ssh/server/hostkey.go')
-rw-r--r--ssh/server/hostkey.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/ssh/server/hostkey.go b/ssh/server/hostkey.go
new file mode 100644
index 0000000..ff1eb82
--- /dev/null
+++ b/ssh/server/hostkey.go
@@ -0,0 +1,37 @@
+package server
+
+import (
+ "dtail/config"
+ "dtail/logger"
+ "dtail/ssh"
+ "io/ioutil"
+ "os"
+)
+
+// PrivateHostKey retrieves the private server RSA host key.
+func PrivateHostKey() []byte {
+ hostKeyFile := config.Server.HostKeyFile
+ _, err := os.Stat(hostKeyFile)
+
+ if os.IsNotExist(err) {
+ logger.Info("Generating private server RSA host key")
+ privateKey, err := ssh.GeneratePrivateRSAKey(config.Server.HostKeyBits)
+
+ if err != nil {
+ logger.FatalExit("Failed to generate private server RSA host key", err)
+ }
+
+ pem := ssh.EncodePrivateKeyToPEM(privateKey)
+ if err := ioutil.WriteFile(hostKeyFile, pem, 0600); err != nil {
+ logger.Error("Unable to write private server RSA host key to file", hostKeyFile, err)
+ }
+ return pem
+ }
+
+ logger.Info("Reading private server RSA host key from file", hostKeyFile)
+ pem, err := ioutil.ReadFile(hostKeyFile)
+ if err != nil {
+ logger.FatalExit("Failed to load private server RSA host key", err)
+ }
+ return pem
+}