https://github.com/golang/crypto/tree/master/ssh/terminal looks great
please run it with
package main
import (
"fmt"
"golang.org/x/crypto/ssh/terminal"
"io"
"log"
"net"
)
func cliSession(c io.ReadWriter) {
tt := terminal.NewTerminal(c, "> ")
tt.SetSize(80, 24)
for i := 0; ; i++ {
s, _ := tt.ReadLine()
fmt.Println("s=", s)
}
}
const listenAddr = "localhost:4000"
func main() {
l, err := net.Listen("tcp", listenAddr)
if err != nil {
log.Fatal(err)
}
for {
c, err := l.Accept()
if err != nil {
log.Fatal(err)
}
go cliSession(c)
}
}
client
socat -,raw,echo=0 tcp:localhost:4000
the terminal package
https://godoc.org/golang.org/x/crypto/ssh/terminal