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)
}()
}