我有一台服务器和一台远程计算机。现在我想通过 SSH 访问远程计算机,但它可能位于 NAT 后面。这就是我想要反向 SSH 连接的原因之一。
这个想法是建立从远程计算机到服务器的连接,并使用此连接通过 SSH 从服务器到远程计算机进行通信。
使用 OpenSSH,这很容易。我从远程计算机打开反向 SSH 隧道:
ssh- R 19999:localhost:22 user@192.168.0.10
现在我可以从服务器端使用它:
ssh localhost -p 19999
我想通过远程计算机上的 go 应用程序和 go SSH 库实现相同的行为。服务器仍将使用 OpenSSH,因此不应更改。
我知道如何从 go 通过 SSH 连接到计算机,但是如何实现相反的部分?
func main() {
config := &ssh.ClientConfig{
User: "vagrant",
Auth: []ssh.AuthMethod{
ssh.Password("vagrant"),
},
}
conn, err := ssh.Dial("tcp", "192.168.0.10:22", config)
if err != nil {
panic("Failed to dial: " + err.Error())
}
}
侃侃无极
catspeake
相关分类