最近在使用winscp连接搬瓦工和vultr经常的出现遇到2个问题。winscp 会话超时:网络错误 软件造成的连接中止及主机超过15秒无通信,继续等待... 请注意:如果问题依然出现,尝试关闭优化连接缓存大小。后来经过多方搜索终于找到了解决办法,记录如下。
发现过程
一,如果在长时间登录软件后并想要修改保存文件总是会遇到一个错误提示:网络错误 软件造成的连接中止。需要我们选择中止或者重新连接后,再次提交修改后就正常的保存了。这种情况如果短时间内你频繁的修改文件则不会发生。
二,主机超过15秒无通信,继续等待... 请注意:如果问题依然出现,尝试关闭优化连接缓存大小。这个问题在同上面修改文件时出现,但是在我初次登录软件时偶尔也会发生,这样就比较麻烦了。
解决办法
方法一:
打开winscp,点击左下角的工具-选项-面板-远程-在远程面板的刷新远程面板间隔,选择一个核是的时间间隔,比如30秒。这个可以部分解决这种问题出现的机率。
方法二:
在我们新建会话的时候,选择高级选项-在高级站点设置里的-连接选项里,我们就能发现优化连接缓冲大小这个选项。
在keepalives这个选项里,我们选中发送空SSH包。keepalives的间隔秒数我们可以使用默认的或者自己选一个适合时间。
IP协议版本建议选择IPV4,因为目前有部分地区虽然开通了IPV6,但是没有通信。
总结
出现上面的情况是某些服务器(以及客户端和服务器之间的路由器上的防火墙和路由器)如果在定义的时间内没有从中接收任何数据,则会断开客户端。在Keepalives框中,您可以命令WinSCP定期发送一些虚拟数据,以避免断开连接。此期间定义为Keepalive之间的秒数。 请注意,Keepalive并不总是有用。如果您的防火墙在闲置期后断开连接,它们会有所帮助; 但如果您和服务器之间的网络遭受连接中断,那么Keepalive实际上会使事情变得更糟。如果会话空闲,并且端点之间的连接暂时丢失,但在任何一方尝试发送任何内容之前恢复连接,那么将没有问题 - 两个端点都不会注意到任何错误。但是,如果一方确实在休息期间发送了一些东西,它将反复尝试重新发送,并最终放弃并放弃连接。然后,当连接恢复时,另一方将发现第一方不再相信存在开放连接。Keepalive会让这类问题变得更糟,因为它们增加了WinSCP在连接中断期间尝试发送数据的可能性。(其他类型的定期网络活动可能会导致此行为;特别是SSH-2重新密钥可以产生这种效果。) 因此,您可能会发现Keepalive有助于连接丢失,或者您可能会发现它们会使情况变得更糟,具体取决于您与服务器之间存在何种网络问题。 以上翻译自 https://winscp.net/eng/docs/ui_login_connection#keepalives
出现这个问题其实有部分原因猜测是我们的宽带服务商给分配了内网IP而不是公网的IP,部分光猫里都出现了IPV6的地址。