38 lines
952 B
Go
38 lines
952 B
Go
package main
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
|
|
"github.com/gliderlabs/ssh"
|
|
)
|
|
|
|
func main() {
|
|
|
|
log.Println("starting ssh server on port 2222...")
|
|
|
|
forwardHandler := &ssh.ForwardedTCPHandler{}
|
|
|
|
server := ssh.Server{
|
|
LocalPortForwardingCallback: ssh.LocalPortForwardingCallback(func(ctx ssh.Context, dhost string, dport uint32) bool {
|
|
log.Println("Accepted forward", dhost, dport)
|
|
return true
|
|
}),
|
|
Addr: ":2222",
|
|
Handler: ssh.Handler(func(s ssh.Session) {
|
|
io.WriteString(s, "Remote forwarding available...\n")
|
|
select {}
|
|
}),
|
|
ReversePortForwardingCallback: ssh.ReversePortForwardingCallback(func(ctx ssh.Context, host string, port uint32) bool {
|
|
log.Println("attempt to bind", host, port, "granted")
|
|
return true
|
|
}),
|
|
RequestHandlers: map[string]ssh.RequestHandler{
|
|
"tcpip-forward": forwardHandler.HandleSSHRequest,
|
|
"cancel-tcpip-forward": forwardHandler.HandleSSHRequest,
|
|
},
|
|
}
|
|
|
|
log.Fatal(server.ListenAndServe())
|
|
}
|