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