在go中通过多个主机SSH

时间:2015-06-07 19:18:00

标签: ssh go cryptography

在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())

1 个答案:

答案 0 :(得分:0)

问题是您在同一主机上运行所有这些代码。为方便起见,让我们在host0上调用您运行应用的主机。

您开始从host0host1建立连接。这很好。您接下来要做的是建立从host1host2的连接。为此,您需要在host1上运行SSH代码。但是,您的应用程序(始终在host0上运行)并不适合这样做。

您需要在host1上放置一个与host2建立连接的程序,然后将命令沿SSH连接发送到将启动该程序的host1