2015-06-07 2 views
0

Возможно ли SSH другому хосту, находясь на сеансе SSH в golang? Я попытался связать некоторые вещи вместе, как это, но распечатка говорит, что удаленный адр клиента 2 равен 0.0.0.0, и возникает ошибка, когда я пытаюсь выполнить что-либо на ssh.Session из client2.SSH через несколько хостов в go

host1 := "host1.com" 
host2 := "host2.com" 
client1, err := ssh.Dial("tcp", host, config) 
if err != nil { 
    panic("Failed to dial: " + err.Error()) 
} 

conn, err := client1.Dial("tcp", host2) 
if err != nil { 
    panic(err) 
} 

sshConn, newChan, requestChan, err := ssh.NewClientConn(conn, host2, config) 
if err != nil { 
    panic(err) 
} 

client2 := ssh.NewClient(sshConn, newChan, requestChan) 

fmt.Println("Client 2 RemoteAddr():", client2.RemoteAddr()) 

ответ

0

Проблема в том, что вы используете весь этот код на том же хосте. Назовите хост, на котором вы запускаете приложение, на host0 для удобства.

Вы начинаете подключение от host0 до host1. Это прекрасно работает. То, что вы, похоже, хотите сделать дальше, - это подключение от host1 до host2. Для этого вам нужно запустить код SSH на host1. Но ваше приложение, которое есть и всегда работало на host0, не в состоянии сделать это.

Вам нужно будет поместить программу на host1, которая делает соединение с host2, а затем отправить команду вниз по SSH-соединению до host1, которая запустит эту программу.

Смежные вопросы