170 похожих чатов

На сервере 1 расположено приложение на GO На сервер 2 подключаюсь

по ssh в го
затем открываю тоннель на сервер 3- который расположен в сети сервера 2
там есть аэроспайк к которому нужно получить доступ. Напрямую работает, а через тоннель нет, почему? Так же через тоннель постгрес и кликхаус работают. Код
type SshConnection struct {
Client *ssh.Client
}
ssh := &SshConnection{}
addr := fmt.Sprintf("%s:%s", "remote2.host", "22")
clientConfig := &ssh.ClientConfig{
User: "test",
Auth: []ssh.AuthMethod{
ssh.Password("test"),
},
Timeout: 5 * time.Minute,
HostKeyCallback: ssh.InsecureIgnoreHostKey(),
}
c.Client, err = ssh.Dial("tcp", addr, clientConfig)
if err != nil {
return errors.Wrap(err, "initialize connect")
}
//---------------------------//
asRemoteAddr := fmt.Sprintf("%s:%s",
"remote3.host", "3000")
asLocalAddr := fmt.Sprintf("%s:%s",
"localhost", "3000")
err = ssh.OpenTunnel(asRemoteAddr, asLocalAddr)
if err != nil {
return errors.Wrap(err, "open tunnel for as")
}
//---------------------------//
asClient, err = aerospike.NewClient("localhost", 3000)
if err != nil {
panic(err)
}

7 ответов

9 просмотров

Что значит "не работает"?

Egor- Автор вопроса
Alexey Shumkin
Что значит "не работает"?

висит подключение, затем ошибку выбивает timeout

Egor- Автор вопроса
Alexey Shumkin
Что значит "не работает"?

Failed to connect to host(s): [localhost:3000]; error: Connecting to the cluster timed out.

Egor
Failed to connect to host(s): [localhost:3000]; er...

На каком хосте это выполняется? ;)

Можешь пульнуть доку по opentunnel?

Egor- Автор вопроса

На сервере 1 расположено приложение на GO На сервер 2 подключаюсь по ssh в го затем открываю тоннель на сервер 3- который расположен в сети сервера 2 там есть аэроспайк к которому нужно получить доступ. Напрямую работает, а через тоннель нет, почему? Так же через тоннель постгрес и кликхаус работают. Код: type SshConnection struct { Client *ssh.Client } ssh := &SshConnection{} addr := fmt.Sprintf("%s:%s", "remote2.host", "22") clientConfig := &ssh.ClientConfig{ User: "test", Auth: []ssh.AuthMethod{ ssh.Password("test"), }, Timeout: 5 * time.Minute, HostKeyCallback: ssh.InsecureIgnoreHostKey(), } c.Client, err = ssh.Dial("tcp", addr, clientConfig) if err != nil { return errors.Wrap(err, "initialize connect") } //---------------------------// asRemoteAddr := fmt.Sprintf("%s:%s", "remote3.host", "3000") asLocalAddr := fmt.Sprintf("%s:%s", "localhost", "3000") err = ssh.OpenTunnel(asRemoteAddr, asLocalAddr) if err != nil { return errors.Wrap(err, "open tunnel for as") } //---------------------------// asClient, err = aerospike.NewClient("localhost", 3000) if err != nil { panic(err) } //---------------------------// func (c *SshConnection) OpenTunnel(remoteAddr, localAddr string) error { remote, err := c.Client.Dial("tcp", remoteAddr) if err != nil { return errors.Wrap(err, "open remote connection") } local, err := net.Listen("tcp", localAddr) if err != nil { return errors.Wrap(err, "open local connection") } go func(remote net.Conn, local net.Listener) { defer remote.Close() defer local.Close() for { l, err := local.Accept() if err != nil { log.Fatalf("tunnel: listen Accept failed %s", err) } go func() { _, err := io.Copy(l, remote) if err != nil { log.Fatalf("tunnel: io.Copy failed: %v", err) } }() go func() { _, err := io.Copy(remote, l) if err != nil { log.Fatalf("tunnel: io.Copy failed: %v", err) } }() } }(remote, local) return nil }

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта