File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 1+ package main
2+
3+ import (
4+ "fmt"
5+ "io"
6+ "io/ioutil"
7+ "log"
8+
9+ "github.com/gliderlabs/ssh"
10+ "github.com/pkg/sftp"
11+ )
12+
13+ // SftpHandler handler for SFTP subsystem
14+ func SftpHandler (sess ssh.Session ) {
15+ debugStream := ioutil .Discard
16+ serverOptions := []sftp.ServerOption {
17+ sftp .WithDebug (debugStream ),
18+ }
19+ server , err := sftp .NewServer (
20+ sess ,
21+ serverOptions ... ,
22+ )
23+ if err != nil {
24+ log .Printf ("sftp server init error: %s\n " , err )
25+ return
26+ }
27+ if err := server .Serve (); err == io .EOF {
28+ server .Close ()
29+ fmt .Println ("sftp client exited session." )
30+ } else if err != nil {
31+ fmt .Println ("sftp server completed with error:" , err )
32+ }
33+ }
34+
35+ func main () {
36+ ssh_server := ssh.Server {
37+ Addr : "127.0.0.1:2222" ,
38+ SubsystemHandlers : map [string ]ssh.SubsystemHandler {
39+ "sftp" : SftpHandler ,
40+ },
41+ }
42+ log .Fatal (ssh_server .ListenAndServe ())
43+ }
You can’t perform that action at this time.
0 commit comments