glider-ssh/_examples/ssh-forwardagent/forwardagent.go
Jeff Lindsay 33ad2fe318 [proposal] ConnCallback (#36)
ConnCallback lets you wrap connection objects for timeouts and limiting
2017-07-12 12:27:56 -05:00

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))
}