Как отправить сообщение через SSH без Pty и без команд на сервер - PullRequest
0 голосов
/ 01 июля 2019

У меня есть приложение 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.Output или session.Run

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...