在golang的SSH会话中,是否可以通过SSH连接到其他主机?我尝试将这些东西链接在一起,但打印输出说客户端2的远程地址是0.0.0.0,当我尝试从client2执行ssh.Session上的任何操作时都会给出错误。
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 :(得分:0)
问题是您在同一主机上运行所有这些代码。为方便起见,让我们在host0
上调用您运行应用的主机。
您开始从host0
到host1
建立连接。这很好。您接下来要做的是建立从host1
到host2
的连接。为此,您需要在host1
上运行SSH代码。但是,您的应用程序(始终在host0
上运行)并不适合这样做。
您需要在host1
上放置一个与host2
建立连接的程序,然后将命令沿SSH连接发送到将启动该程序的host1
。