func InitDebug()

in pkg/sshd/sshd.go [66:120]


func InitDebug(kr *mesh.KRun) {
	sshCM, err := kr.Cfg.GetSecret(context.Background(), kr.Namespace, "sshdebug")
	if err != nil {
		log.Println("SSH debug disabled, missing sshdebug secret ", err)
		return
	}

	if _, err := os.Stat("/usr/sbin/sshd"); os.IsNotExist(err) {
		if inprocessInit != nil {
			inprocessInit(sshCM, kr.Namespace)
			return
		}
		log.Println("SSH debug disabled, sshd not installed")
		return
	}


	pwd, _ := os.Getwd()
	sshd := pwd + "/var/run/secrets/sshd"
	os.MkdirAll(sshd, 0700)

	for k, v := range sshCM {
		err = os.WriteFile(sshd + "/" + k, v, 0700)
		if err != nil {
			log.Println("Secret write error", k, err)
			return
		}
	}

	// /usr/sbin/sshd -p 15022 -e -D -h ~/.ssh/ec-key.pem
	// -f config
	// -c host_cert_file
	// -d debug - only one connection processed
	// -e debug to stderr
	// -h or -o HostKey
	// -p or -o Port
	//

	if _, err := os.Stat(sshd + "/sshd_config"); os.IsNotExist(err) {
		ioutil.WriteFile(sshd+"/sshd_config", []byte(fmt.Sprintf(sshdConfig, sshd, sshd, sshd)), 0700)
	}
	cmd := exec.Command("/usr/sbin/sshd",
		"-f", sshd + "/sshd_config",
			"-e",
			"-D")
	cmd.Stdout = os.Stdout
	cmd.Stderr = os.Stderr
	kr.Children = append(kr.Children, cmd)

	go func() {
		err := cmd.Start()
		log.Println("sshd exit", "err", err, "state", cmd.ProcessState)
	}()

}