golang中的ssh服务器
为了构建ssh服务器,我正在尝试github.com/gliderlabs/ssh包。 这个例子效果很好。 下面的代码在我连接时收听并回复一些文本,然后关闭连接 我想保持它的开放性,倾听用户的输入,并回应您的说法:。。。但我不知道该怎么办,这似乎太简单了,无法在什么地方解释 有人能告诉我该怎么办吗golang中的ssh服务器,go,ssh,Go,Ssh,为了构建ssh服务器,我正在尝试github.com/gliderlabs/ssh包。 这个例子效果很好。 下面的代码在我连接时收听并回复一些文本,然后关闭连接 我想保持它的开放性,倾听用户的输入,并回应您的说法:。。。但我不知道该怎么办,这似乎太简单了,无法在什么地方解释 有人能告诉我该怎么办吗 package main import ( "bufio" "fmt" "io" "log" "github.com/gliderlabs/ssh" )
package main
import (
"bufio"
"fmt"
"io"
"log"
"github.com/gliderlabs/ssh"
)
func main() {
ssh.Handle(func(s ssh.Session) {
io.WriteString(s, fmt.Sprintf("Hello %s\n", s.User()))
io.WriteString(s, fmt.Sprintf("Hello 2%s\n", s.User()))
io.WriteString(s, fmt.Sprintf("Hello 3%s\n", s.User()))
text,err:= bufio.NewReader(s).ReadString('\n')
if err != nil {
panic("GetLines: " + err.Error())
}
io.WriteString(s, fmt.Sprintf("ton texte %s\n", text))
})
log.Println("starting ssh server on port 2223...")
log.Fatal(ssh.ListenAndServe(":2223", nil))
}
若问题仍然是实际的,那个么您应该在处理程序中使用{}循环,并始终读取输入。顺便说一句,它更适合使用golang.org/x/crypto/ssh/terminal包 这里有一个小例子:
func (s *Server) handler(sess ssh.Session) {
...
term := terminal.NewTerminal(sess, "> ")
for {
line, err := term.ReadLine()
if err != nil {
break
}
response := router(line)
log.Println(line)
if response != "" {
term.Write(append([]byte(response), '\n'))
}
}
log.Println("terminal closed")
}
我认为这不是ssh的目的。它确保了连接的安全,而不是假设自己做什么。例如,您可以通过ssh连接到远程bash,然后安全地使用远程bash。右ssh是传输流的一种方式。但接下来我的问题是,如何充分倾听帽子隧道的尽头。我有一些代码,但我不能粘贴它