我有一台服务器和一台远程计算机。现在我想通过SSH访问远程计算机,但可能会遇到NAT的情况。这是我想要反向SSH连接的原因之一。
思路是从远程计算机到服务器建立连接,并使用此连接从服务器通过SSH与远程计算机通信。
使用OpenSSH很容易实现。从远程计算机打开反向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())
}
}