38 lines
726 B
Go
38 lines
726 B
Go
package main
|
|
|
|
import (
|
|
"golang.org/x/crypto/ssh"
|
|
"log"
|
|
"net"
|
|
)
|
|
|
|
func main() {
|
|
|
|
readFlags()
|
|
config := &ssh.ClientConfig{
|
|
User: username,
|
|
Auth: []ssh.AuthMethod{
|
|
ssh.Password(password),
|
|
ssh.PasswordCallback(passwordCallback),
|
|
ssh.KeyboardInteractive(keyboardInteractiveChallenge),
|
|
},
|
|
}
|
|
|
|
localListener, err := net.Listen(`tcp`, localAddrString)
|
|
if err != nil {
|
|
log.Printf("net.Listen failed: %v\n", err)
|
|
} else {
|
|
log.Println(`Listen to local address.`)
|
|
}
|
|
|
|
for {
|
|
localConn, err := localListener.Accept()
|
|
if err != nil {
|
|
log.Printf("listen.Accept failed: %v\n", err)
|
|
} else {
|
|
log.Println(`Accepted a client.`)
|
|
go forward(localConn, config)
|
|
}
|
|
}
|
|
}
|