用golang反向SSH
发布时间:2020-12-16 09:26:03 所属栏目:大数据 来源:网络整理
导读:我有一台服务器和一台远程计算机.现在我想通过SSH访问远程计算机,但它可能是在NAT后面.这是我想要反向SSH连接的原因之一. 我们的想法是建立从远程计算机到服务器的连接,并使用此连接通过SSH从服务器与远程计算机进行通信. 使用OpenSSH这很容易.从远程计算机
我有一台服务器和一台远程计算机.现在我想通过SSH访问远程计算机,但它可能是在NAT后面.这是我想要反向SSH连接的原因之一.
我们的想法是建立从远程计算机到服务器的连接,并使用此连接通过SSH从服务器与远程计算机进行通信. 使用OpenSSH这很容易.从远程计算机我打开反向SSH隧道: ssh- R 19999:localhost:22 user@192.168.0.10 现在我可以从服务器端使用它: ssh localhost -p 19999 我想在远程计算机上使用go应用程序和go SSH库实现相同的行为.服务器仍将使用OpenSSH,因此不应更改. 我知道如何通过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()) } } 解决方法
我找到了解决方案.如果提供一个命令,OpenSSH将返回一个终端会话或命令输出.此外,它允许您通过开放隧道验证从服务器到客户端的连接.
为了支持这种行为,我需要在远程端提供与ssh服务器实现的开放连接的监听器.比我想的更复杂,但它有效. 我有一个工作示例服务器here.我只需要在示例代码中为客户端连接上的侦听器交换侦听器. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |