Skip to content

Commit db09465

Browse files
Merge pull request #182 from jm33-m0/master
add sftp-server example
2 parents 0f80af4 + 3cef403 commit db09465

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

_examples/ssh-sftpserver/sftp.go

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
}

0 commit comments

Comments
 (0)