package main import ( "fmt" "io" "log" "strings" "github.com/gliderlabs/ssh" gossh "golang.org/x/crypto/ssh" ) func main() { ssh.Handle(func(s ssh.Session) { authorizedKey := gossh.MarshalAuthorizedKey(s.PublicKey()) io.WriteString(s, fmt.Sprintf("\r\n%s\r\n", strings.Repeat("-", 88))) io.WriteString(s, fmt.Sprintf("public key used by %s:\n", s.User())) io.WriteString(s, fmt.Sprintf("%v", s.PublicKey())) io.WriteString(s, fmt.Sprintf("\r\n%s\r\n", strings.Repeat("-", 88))) s.Write(authorizedKey) io.WriteString(s, fmt.Sprintf("\r\n%s\r\n", strings.Repeat("-", 88))) }) publicKeyOption := ssh.PublicKeyAuth(func(ctx ssh.Context, key ssh.PublicKey) bool { log.Println("type: ", key.Type()) if key.Type() == "sk-ecdsa-sha2-nistp256@openssh.com" { return true } return false //return true // allow all keys, or use ssh.KeysEqual() to compare against known keys }) log.Println("Listening :222...") log.Fatal(ssh.ListenAndServe(":2222", nil, publicKeyOption)) }