如何调试 SSH 连接偶尔挂起的情况?

如何调试 SSH 连接偶尔挂起的情况?

有时(但不是每次 - 大约每 10 次尝试中有 3 次成功)当我尝试连接到托管在 Azure 上的 VM 时,我的 SSH 连接会在提供 shell 之前挂起;详细调试日志中的最后一条消息是:

debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768

当使用它运行时strace,它显示的最新系统调用如下所示:

pselect6(7, [3], [], NULL, NULL, NULL)

查看服务器端日志,我看到的是:

Accepted publickey for <USER> from <MY IP> port 29478 ssh2: RSA SHA256:<FINGERPRINT>
pam_unix(sshd:session): session opened for user <USER> by (uid=0)
  • 连接到 Azure 上托管的其他虚拟机(即使在同一区域)不会出现任何问题。我验证过,两者的 SSH 服务器版本没有区别。
  • 当使用其他虚拟机作为跳转主机时,它会连续 10 次成功

我该如何调试这个问题?

答案1

我最终切换到tinyssh连接到不会表现出相同行为。

相关内容