modulepackage
0.0.0-20190320133156-e372dc11f457
Repository: https://github.com/nlimpid/obfssh.git
Documentation: pkg.go.dev
# README
obfssh
obfssh is wrapper for golang.org/x/crypto/ssh protocol, add support for listen or connect ssh via TLS
server usage example
import "github.com/fangdingjun/obfssh"
import "golang.org/x/crypto/ssh"
config := &ssh.ServerConfig{
// add ssh server configure here
// for example auth method, cipher, MAC
...
}
var l net.Listener
var err error
if useTLS {
cert, err := tls.LoadX509KeyPair(certFile, keyFile)
l, err = tls.Listen("tcp", ":2022", &tls.Config{
Certificates: []tls.Certificate{cert},
}
}else{
l, err = net.Listen(":2022")
}
defer l.Close()
for {
c, err := l.Accept()
go func(c net.Conn){
defer c.Close()
sc, err := obfssh.NewServer(c, config, &obfssh.Conf{})
sc.Run()
}(c)
}
client usage example
import "github.com/fangdingjun/obfssh"
import "golang.org/x/crypto/ssh"
addr := "localhost:2022"
config := ssh.ClientConfig{
// add ssh client config here
// for example auth method
...
}
var c net.Conn
var err error
if useTLS {
c, err = tls.Dial("tcp", addr, &tls.Config{
ServerName: "localhost",
InsecureSkipVerify: true,
}
}else{
c, err = net.Dial("tcp", addr)
}
// create connection
client, err := obfssh.NewClient(c, config, addr, &obfssh.Conf{})
// local to remote port forward
client.AddLocalForward(":2234:10.0.0.1:3221")
// remote to local port forward
client.AddRemoteForward(":2234:10.2.0.1:3221")
// dynamic port forward
client.AddDynamicForward(":4321")
// wait to be done
client.Run()
limitions
now, the server side only implements the port forward function, start shell or execute a command is not suppurted
License
GPLv3, see LICENSE file details
# Functions
NewClient create a new ssh Client
addr is server address
conf is the client configure
.
NewServer create a new struct for Server
c is net.Conn
config is &ssh.ServerConfig
conf is the server configure
.
PipeAndClose pipe the data between c and s, close both when done.
# Structs
Client is ssh client connection.
Conf keeps the configure of server or client.
Server is server connection.
TimedOutConn is a net.Conn with read/write timeout set.