terminal溢出时,SSH有时会连接起来?

我在基于Debian Lenny的服务器(这是Xen环境中的一个虚拟主机,在Xen内核上启动)上遇到了SSH问题。 我希望有人能帮助我。

当terminal溢出时(terminal底部的新线路,通常迫使它滚动),SSH连接似乎不知何故被频繁地搞砸了。 连接会丢失,但不会定期断开连接。 当我做以下几乎总是发生:

  • 现有的SSH连接断开连接(定期)
  • 我点腻子重新build立连接
  • login提示出现在腻子terminal窗口的最底部
  • 我input我的login名,按回车键
  • 我被要求input密码,我input密码,按回车键和BOOM! 没有更多的发生。 我必须重新连接。

所以它是可重复的。

我不完全确定在input密码之前或之后连接是否崩溃。

此外,当显示的文本太多的时候也会发生这种情况(例如,当我编译某个东西的时候,或者在有很多条目的目录上执行ls -l时)。

然而,使用“屏幕”有助于减less发生的频率,但并不能完全解决问题。

它的出现与我使用的terminal软件无关。 我主要使用腻子,但也发生在其他客户端。

我当然希望有人能帮我解决这个问题。

提前致谢!

// 编辑 :我刚刚做了一个ssh连接的Wireshark跟踪,没有什么,我再说一遍,工作和失败连接之间没有什么不同(至less除了帧号,端口和时间,显然不能等于)。 这导致我假设错误必须发生在服务器端。

从你最初的描述来看,似乎有一些特殊的字符通信正在被转移到SSH shell本身。
这些是你可以尝试的一些事情,

  1. 保持wirehark轨道来检查SSH连接实际上是否显示TCP-FIN序列(当您退出一个正常的连接作为参考时,请检查在wireshark视图中如何发生这种情况)。
    • 如果没有看到FIN序列,则SSH以某种方式停顿(不closures)
  2. 当您停顿时,请尝试按键顺序Ctrl + Q

你也可以尝试用这些东西消除特定的终点行为,如果这些行为中的任何一个都可以在你的设置中完成的话,

  1. 尝试从另一台客户机和同一台服务器重现
  2. 尝试在不同的服务器上使用相同的客户机重现
  3. 尝试使用“ -v -v -v ”debugging日志logging选项运行客户端
  4. 尝试使用“ -d -d -d ”debugging日志logging选项运行服务器(查看服务器debugging消息的/var/log/syslog/var/log/auth.log
  5. 当您使用screen进行复制时,当您尝试断开连接并重新连接时,它会继续失速:屏幕上显示“ -D -R ”?

听起来就像当你开始达到TCP连接的最大数据包大小时,你的连接就会被丢弃。 使用SSH,通常传输数据相当小,并且仍然远低于MTU。

中间是否有防火墙将丢弃所有的ICMP数据包? RFC1918地址空间中是否有路由器编号?

作为一个粗暴的黑客,如果你以root身份在服务器上运行:

 ifconfig eth0 mtu 1420 

这是否缓解了这个问题? 如果是这样,pathMTU发现被破坏(configuration错误的防火墙某处),并且您有一个链接的MTU比每个端点本地链接的MTU低。 你还没有解决这个问题,通过降低服务器端的MTU来解决这个问题。