33ad2fe318
ConnCallback lets you wrap connection objects for timeouts and limiting
36 lines
683 B
Go
36 lines
683 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os/exec"
|
|
|
|
"github.com/gliderlabs/ssh"
|
|
)
|
|
|
|
func main() {
|
|
ssh.Handle(func(s ssh.Session) {
|
|
cmd := exec.Command("ssh-add", "-l")
|
|
if ssh.AgentRequested(s) {
|
|
l, err := ssh.NewAgentListener()
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer l.Close()
|
|
go ssh.ForwardAgentConnections(l, s)
|
|
cmd.Env = append(s.Environ(), fmt.Sprintf("%s=%s", "SSH_AUTH_SOCK", l.Addr().String()))
|
|
} else {
|
|
cmd.Env = s.Environ()
|
|
}
|
|
cmd.Stdout = s
|
|
cmd.Stderr = s.Stderr()
|
|
if err := cmd.Run(); err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
})
|
|
|
|
log.Println("starting ssh server on port 2222...")
|
|
log.Fatal(ssh.ListenAndServe(":2222", nil))
|
|
}
|