如何解决ssh会话打开请求最终在ssh连接上提供EOF
我研究在节点上运行的代理恶魔。启动代理时,将建立到其他节点的所有ssh连接,然后在特定的时间间隔(每周一次)上,我们在这些ssh连接上创建新会话以与其他节点进行通信。但据观察,在该时间范围内大约1个月后,会话创建会出现EOF错误。
User: config.Username,Auth: []ssh.AuthMethod{
ssh.Password(config.Password),},HostKeyCallback: func(hostname string,remote net.Addr,key ssh.PublicKey) error {
return nil
},}
client,err := ssh.Dial("tcp",config.Host+":22",sshConfig)
session,err := client.NewSession()
defer session.Close()
b,err := session.CombinedOutput(command)
当此会话创建出现EOF错误时,有什么方法可以恢复处于工作状态的ssh连接?
如果仅在读取/写入错误时才考虑重拨或重新连接,那么此处使用哪种设计模式将很有用。
谢谢
解决方法
我认为问题是一段时间后连接断开,您可以尝试的几件事是
-
如果服务器提供了api或ping来增加连接过期时间,请创建一种机制来保持连接有效。像github.com/felixge/tcpkeepalive
-
或者尝试以固定的时间间隔重新拨号连接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。