Browse Source

Support inlined sshd host key (#1054)

Lingfeng Zhang 1 year ago
parent
commit
1f83d1758d
1 changed files with 10 additions and 5 deletions
  1. 10 5
      ssh.go

+ 10 - 5
ssh.go

@@ -90,14 +90,19 @@ func configSSH(l *logrus.Logger, ssh *sshd.SSHServer, c *config.C) (func(), erro
 	}
 	}
 
 
 	//TODO: no good way to reload this right now
 	//TODO: no good way to reload this right now
-	hostKeyFile := c.GetString("sshd.host_key", "")
-	if hostKeyFile == "" {
+	hostKeyPathOrKey := c.GetString("sshd.host_key", "")
+	if hostKeyPathOrKey == "" {
 		return nil, fmt.Errorf("sshd.host_key must be provided")
 		return nil, fmt.Errorf("sshd.host_key must be provided")
 	}
 	}
 
 
-	hostKeyBytes, err := os.ReadFile(hostKeyFile)
-	if err != nil {
-		return nil, fmt.Errorf("error while loading sshd.host_key file: %s", err)
+	var hostKeyBytes []byte
+	if strings.Contains(hostKeyPathOrKey, "-----BEGIN") {
+		hostKeyBytes = []byte(hostKeyPathOrKey)
+	} else {
+		hostKeyBytes, err = os.ReadFile(hostKeyPathOrKey)
+		if err != nil {
+			return nil, fmt.Errorf("error while loading sshd.host_key file: %s", err)
+		}
 	}
 	}
 
 
 	err = ssh.SetHostKey(hostKeyBytes)
 	err = ssh.SetHostKey(hostKeyBytes)