in pkg/sshd/ssh_exec.go [427:469]
func (srv *Server) connectionHandler(s *session) {
defer func() {
s.Close()
log.Println("session closed")
}()
log.Printf("starting ssh session with command '%+v'", s.rawCmd)
cmd := srv.buildCmd(s)
//if ssh.AgentRequested(s) {
// log.Println("agent requested")
// l, err := ssh.NewAgentListener()
// if err != nil {
// log.Println("failed to start agent", err)
// return
// }
//
// defer l.Close()
// go ssh.ForwardAgentConnections(l, s)
// cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", "SSH_AUTH_SOCK", l.Addr().String()))
//}
ptyReq, winCh, isPty := s.Pty()
if isPty {
log.Println("handling PTY session")
if err := handlePTY(cmd, s, ptyReq, winCh); err != nil {
sendErrAndExit(s, err)
return
}
s.Exit(0)
return
}
log.Println("handling non PTY session")
if err := handleNoTTY(cmd, s); err != nil {
sendErrAndExit(s, err)
return
}
s.Exit(0)
}