如何在没有Pty和命令的情况下通过SSH发送消息到服务器

时间:2019-07-01 13:23:45

标签: go ssh client

我有一个Go应用,可启动SSH服务器,该服务器不接受要在其上运行的任何命令,因此 err = session.Run("ls -l $LC_USR_DIR")将被拒绝。

该服务器也没有Pty。

当我从终端通过SSH进入此Go应用程序时,我可以将消息作为JSON发送,应用程序可以接受并进行如下处理:

user@host:~/go/src/app$ ssh localhost -p 2095
PTY allocation request failed on channel 0
qwerty
{"response":"malformed_or_unknown_request"}

如何通过另一个Go应用执行相同的操作,该应用将充当负载平衡器或代理,并在上述应用的多个实例之间分配请求?还有没有命令。

到目前为止,我有:

func HandleMessage(msg string) {
  connection, err := ssh.Dial("tcp", "localhost:2095", getConfig("/home/user/.ssh/id_rsa"))
  if err != nil {
    log.Println("Could not establish connection with server:", err)
    return
  }
  defer connection.Close()

  session, err := connection.NewSession()
  if err != nil {
    log.Println("Could not create session with server:", err)
    return
  }
  defer session.Close()
  err = session.Shell()

  fmt.Println(msg)
  fmt.Println(err)
}

成功建立了连接,因为我的Go应用程序看到并接受了外壳请求,但是我不知道如何在不使用命令session.Outputsession.Run的情况下继续向其推送消息

0 个答案:

没有答案