Files
simple-ssh-server/main.go
2021-07-17 17:17:09 +08:00

35 lines
1004 B
Go

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