Updated readme with examples
This commit is contained in:
parent
7308727a1c
commit
3bc1eb83dd
95
README.md
95
README.md
@ -1,4 +1,95 @@
|
||||
easyssh
|
||||
=======
|
||||
# easyssh
|
||||
|
||||
[![GoDoc](https://godoc.org/dev.justinjudd.org/justin/easyssh?status.svg)](https://godoc.org/dev.justinjudd.org/justin/easyssh)
|
||||
|
||||
easyssh provides a simple wrapper around the standard SSH library. Designed to be like net/http but for ssh.
|
||||
|
||||
## Install
|
||||
|
||||
go get dev.justinjudd.org/justin/easyssh
|
||||
|
||||
## Usage
|
||||
|
||||
### Server Example
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
|
||||
"dev.justinjudd.org/justin/easyssh"
|
||||
|
||||
"golang.org/x/crypto/ssh"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
||||
privateBytes, err := ioutil.ReadFile("id_rsa")
|
||||
if err != nil {
|
||||
log.Fatal("Failed to load private key (./id_rsa)")
|
||||
}
|
||||
|
||||
private, err := ssh.ParsePrivateKey(privateBytes)
|
||||
if err != nil {
|
||||
log.Fatal("Failed to parse private key")
|
||||
}
|
||||
|
||||
config := &ssh.ServerConfig{
|
||||
PasswordCallback: func(c ssh.ConnMetadata, pass []byte) (*ssh.Permissions, error) {
|
||||
if c.User() == "test" && string(pass) == "test" {
|
||||
log.Printf("User logged in: %s", c.User())
|
||||
return nil, nil
|
||||
}
|
||||
return nil, fmt.Errorf("password rejected for %s", c.User())
|
||||
},
|
||||
}
|
||||
config.AddHostKey(private)
|
||||
|
||||
|
||||
easyssh.HandleChannel(easyssh.SessionRequest, easyssh.SessionHandler())
|
||||
easyssh.HandleChannel(easyssh.DirectForwardRequest, easyssh.DirectPortForwardHandler())
|
||||
easyssh.HandleRequestFunc(easyssh.RemoteForwardRequest, easyssh.TCPIPForwardRequest)
|
||||
|
||||
easyssh.ListenAndServe(":2022", config, nil)
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
### Client Example
|
||||
|
||||
```go
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"dev.justinjudd.org/justin/easyssh"
|
||||
"golang.org/x/crypto/ssh"
|
||||
)
|
||||
|
||||
func main() {
|
||||
config := &ssh.ClientConfig{
|
||||
User: "test",
|
||||
Auth: []ssh.AuthMethod{
|
||||
ssh.Password("test"),
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
conn, err := easyssh.Dial("tcp", "localhost:2022", config)
|
||||
if err != nil {
|
||||
log.Fatalf("unable to connect: %s", err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
err = conn.LocalForward("localhost:8000", "localhost:6060")
|
||||
if err != nil {
|
||||
log.Fatalf("unable to forward local port: %s", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
```
|
||||
|
Loading…
Reference in New Issue
Block a user