问下大家,客户一台电脑ssh连公网服务器,为啥老是断开?

情况是这样的,我这客户电脑是Windows Server 2019 Standard
然后我要通过这台电脑连接公网的服务器,
通过命令
ssh root@128.23.12.45
然后能连上公网服务器
但是没过10秒钟没操作就弹出Connection reset by 128.23.12.45 port 22
搞得我很烦恼。然后我还想用frp将这台电脑内网穿透。
然后frp.log 过一段时间就断开重连,搞得我外网访问这台电脑一会能连,一会连不上

2024/05/23 15:07:05 [I] [control.go:252] [5efe7802cbe396] control writer is closing
2024/05/23 15:07:05 [I] [visitor_manager.go:77] [5efe8802cbe396] gracefully shutdown visitor manager
2024/05/23 15:07:05 [I] [service.go:214] [5efe8802cbe396] try to reconnect to server...
2024/05/23 15:07:05 [I] [service.go:301] [5efe8802cbe396] login to server success, get run id [5efe728802cbe396]
2024/05/23 15:07:05 [I] [proxy_manager.go:150] [5efe7802cbe396] proxy added: [web1]
2024/05/23 15:07:05 [I] [control.go:172] [5efe8802cbe396] [web1] start proxy success
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

我自己找了一个方法了,用
ssh root@xxx.xx.xx.x -o ServerAliveInterval=3

然后frpc.ini 的common里面加上
tcp_mux_keepalive_interval = -1

3周前 评论
讨论数量: 3

SSH连接无故断开,并且出现"Connection reset by [IP地址] port 22"的提示,通常是因为以下几个原因造成的:

  1. 空闲超时:很多服务器为了安全考虑,会设置SSH的空闲超时时间,即如果一段时间内没有数据交换,连接就会被服务器主动断开。这可能是你遇到问题的原因之一,特别是当你提到“没过10秒钟没操作”。

  2. 网络不稳定:网络波动或不稳定也可能导致SSH连接突然中断。检查你的本地网络环境和到服务器之间的网络状况。

  3. 防火墙或安全组规则:服务器的防火墙设置或云服务提供商的安全组规则可能会限制长时间无数据传输的连接,从而导致连接被重置。

  4. SSH服务器配置:SSH服务器端(比如/etc/ssh/sshd_config)的配置也可能设置了客户端 alive 空闲时间,如果客户端在这段时间内没有发送任何数据包,连接会被关闭。

  5. 客户端设置:虽然较为少见,但SSH客户端的配置也有可能影响连接稳定性,比如未启用TCPKeepAlive或者ClientAliveInterval等保持连接活跃的设置。

解决方案:

  1. 调整SSH服务器配置:登录到你的服务器,编辑SSH服务器配置文件(通常是/etc/ssh/sshd_config),可以增加或调整以下行来保持连接:

    • ClientAliveInterval 60:设置服务器每隔60秒向客户端发送一个心跳包,保持连接活跃。
    • ClientAliveCountMax 3:允许客户端在没有响应后尝试几次心跳包才断开连接,默认是3次,可以根据需要调整。
  2. 客户端设置:如果你使用的是OpenSSH客户端,可以在客户端的配置文件(通常是~/.ssh/config)中添加以下内容来启用TCPKeepAlive:

    Host *
        TCPKeepAlive yes
        ServerAliveInterval 30

    这会让客户端每隔30秒向服务器发送一个数据包,避免连接因为空闲而被服务器关闭。

  3. 检查网络:确保网络稳定,特别是如果你的网络环境经常变化或不稳定,这可能是频繁断开的主要原因。

  4. 防火墙与安全组:检查服务器的防火墙规则和云服务商的安全组设置,确保没有意外阻止SSH连接的规则存在。

完成上述设置后,记得重启SSH服务(sudo service ssh restartsystemctl restart sshd)使更改生效。如果问题依旧,可能需要更深入地排查网络层面的问题。

3周前 评论

设置连接行参-发送保持活动消息的间隔时间

3周前 评论

我自己找了一个方法了,用
ssh root@xxx.xx.xx.x -o ServerAliveInterval=3

然后frpc.ini 的common里面加上
tcp_mux_keepalive_interval = -1

3周前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!