Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "github.com/gliderlabs/ssh"
- "io"
- "log"
- "fmt"
- "os/exec"
- //"os"
- "bytes"
- "golang.org/x/crypto/ssh/terminal"
- )
- func checkPass(ctx ssh.Context, password string) bool{
- if ctx.User() == "alex" {
- if password == "177" {
- return true
- }
- return false
- }
- return false
- }
- func main() {
- ssh.Handle(func(s ssh.Session) {
- fmt.Println("connected")
- user := s.User()
- fmt.Println(user)
- fmt.Println(s.Environ())
- fmt.Println(s.Command())
- fmt.Println(s.LocalAddr())
- fmt.Println(s.RemoteAddr())
- io.WriteString(s, "Hello "+user+"\n")
- /*var out bytes.Buffer
- cmd := exec.Command("pwd")
- cmd.Path=s.RemoteAddr().String()
- cmd.Stdout = &out
- cmd.Stdout = os.Stdout
- cmd.Stdin = os.Stdin
- cmd.Stderr = os.Stderr
- cmd.Output()
- //os.Stdout.
- fmt.Printf(out.String() + "Y")
- //s.
- io.WriteString(s, out.String())*/
- term := terminal.NewTerminal(s, "> ")
- for {
- line, err := term.ReadLine()
- if err != nil {
- break
- }
- var out bytes.Buffer
- cmd := exec.Command(line)
- cmd.Stdout = &out
- cmd.Run()
- term.Write(out.Bytes())
- /*response := term.(line)
- log.Println(line)
- if response != "" {
- term.Write(append([]byte(response), '\n'))
- }*/
- }
- log.Println("terminal closed")
- })
- log.Println("starting ssh server on port: 443")
- log.Fatal(ssh.ListenAndServe(":443", nil, ssh.PasswordAuth(checkPass)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement