func (s *Server) PublicKeyCallback(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) { s.mu.Lock() si := s.sessionInfo[string(conn.SessionID())] si.User = conn.User() si.Keys = append(si.Keys, key) s.sessionInfo[string(conn.SessionID())] = si s.mu.Unlock() // Never succeed a key, or we might not see the next. See KeyboardInteractiveCallback. return nil, errors.New("") }
func (s *Server) authUser(c ssh.ConnMetadata, pass []byte) (*ssh.Permissions, error) { // no auth - allow all if len(s.Users) == 0 { return nil, nil } // authenticate user n := c.User() u, ok := s.Users[n] if !ok || u.Pass != string(pass) { s.Debugf("Login failed: %s", n) return nil, errors.New("Invalid auth") } //insert session s.sessions[string(c.SessionID())] = u return nil, nil }