我通过 SSH 登录到我的开发箱(使用笔记本电脑上的 PuTTY),会话会定期挂起几秒钟,然后再次响应。我无法缩小范围。
网络设置:服务器和笔记本电脑连接到同一个路由器。
盒子上的服务:
- 阿帕奇
- 杯子
- 失败2ban
- mysqld
- 桑巴
- sendmail(用于带有 dkim 过滤器的 SMTP)
- SSH(如前所述)
顶部输出:
这是挂断事件发生几分钟后发生的事。
top - 02:16:14 up 15 days, 1:11, 1 user, load average: 0.00, 0.03, 0.07
Tasks: 125 total, 1 running, 124 sleeping, 0 stopped, 0 zombie
Cpu(s): 3.3%us, 1.5%sy, 0.0%ni, 92.5%id, 2.6%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 1017408k total, 950744k used, 66664k free, 359728k buffers
Swap: 4194300k total, 14012k used, 4180288k free, 191344k cached
有什么技巧可以解决这个问题?
答案1
我猜:
SSHv2 客户端每传输 X 分钟和/或 Y 字节后启动一次密钥重新交换(对于 PuTTY,默认值为 60 分钟和 1 GB)。密钥重新交换仅需 1-3 秒,但在密钥重新交换完成之前,无法通过 SSH 连接传输任何其他数据。
查找“启动密钥重新交换(原因)”在PuTTY的事件日志中。 (Ctrl Right Click在终端窗口上。)
如果确实是这个原因,您可以:
- 将特定算法(例如 DH 组 14)移至“组交换”之上连接 → SSH → Kex
- 增加同一页面的重新交换超时时间