ls -al 在 ssh 会话中停止

ls -al 在 ssh 会话中停止

当我使用 ssh 登录远程计算机时,遇到了一个非常奇怪的问题。以下是场景:

  1. 我使用 ssh 登录到远程机器(该机器不在本地局域网内)
  2. 是的ls(有效)
  3. 是的ls -a(有效)
  4. 是的ls -l(有效)
  5. 是的ls -al .bash_profile(有效)
  6. 是的ls -al(列出 2 个目录后失败...第三个目录应该是 .bash_profile)

当我从本地网络中的另一台机器使用 ssh 登录到这台机器时,一切正常。

有人可以帮我调试这个问题吗?

更新1: 按照 Dan 的建议,我尝试调整大小。但是为了消除任何问题,ls我尝试这样做

$ls -al >> ls_op.txt (this worked)

然后我就这么做了

$ls >> ls.txt  

直到 ls.txt 的大小为 1020 字节,然后执行
$cat lx.txt(这也有效)
我再次执行 'ls >> ls.txt' 以将文件大小增加到 1024 以上。文件大小现在是 1360 字节。现在执行
$cat ls.txt(失败)

因此肯定存在与数据包大小相关的问题。以下是更多信息。有两个物理位置,假设为 A 和 B。

当我在 A 上的一台机器并登录到 B 上的一台机器时,我能够访问cat大于 1024 字节的文件。

但是,当有人坐在 B 并登录到 A 上的一台机器时,他们可以传输cat小于 1024 字节的文件,但不能cat传输大于 1024 字节的文件。

有人能帮我完成下一步吗?我可以编辑任何机器上的配置文件来让它工作吗?还是这需要在网络级别进行一些配置?

再次感谢你的帮助。

更新2:

ifconfig eth0 mtu 512  

更改网络 A 中机器的 mtu 解决了该问题。


感谢
Parag

答案1

我敢说这是与工作站本地或上游网络相关的 MTU/fragment 问题。返回的数据量可能刚好足以打破平衡并导致其停滞。我想您应该能够对任何大量数据(例如对大型文件执行 'ing 或 SCP'ing)ls -al复制相同的行为。cat


更新:

从这些信息来看,这肯定与 MTU 有关。这很可能是任一网络边界的问题,您必须亲自动手。您可以尝试调整任何路由器的外部 MTU/MSS。但请尽可能保留单个机器的设置,除非内部网络另有规定。

是否有任何特定的协议会故意吞噬数据报的最后几个字节,例如 PPP(oA 或 oE)和 VPN 封装?您是否知道 PMTU(ICMP 目标不可达)被阻止?您是否能够在网络边界执行并观察数据包捕获?

相关内容