Linux
某些機器上的 LAN 中的 SSH“滯後”,混合發行版
幾個月來,我的區域網路內的 SSH 連接出現了一個奇怪的問題。僅當我使用 Windows 10 設備連接到(準系統)Linux 機器時才會發生這種情況。
當我連接到 SSH 伺服器時,就好像我的輸入每秒只發送一次。如果我按住一個鍵,它會在一秒鐘內不列印任何東西,在那一秒鐘之後,我會看到我在那段時間所做的每一次擊鍵。
這是它在工作伺服器上的外觀:
這是有問題的人的樣子:
我測試過/發現的東西
- 更改 /etc/sshd 中的“UseDNS”設置並不能修復它
- 它發生在 Debian 上的 bash(和 zsh)(OpenSSH_7.4p1 Debian-10+deb9u6,OpenSSL 1.0.2r 2019 年 2 月 26 日)和 Alpine Linux 上的 Ash(OpenSSH_7.9p1,OpenSSL 1.1.1b 2019 年 2 月 26 日)
- 它不會在 Alpine Linux OpenSSH_7.7p1、LibreSSL 2.7.4 上發生
- 它不會發生在每台機器上,只是一些(不取決於發行版)
- resolv.conf 是正確的
- 在有和沒有 ClientAliveInterval 的情況下都會發生錯誤(在客戶端和伺服器上測試)
- ping 設備總是很快(不到 1 毫秒),所以它只是 SSH
- 當我從 Windows 10 上的 linux 子系統以及 Putty 和 MobaXterm 進行 ssh 時,它也會滯後
- 當我從 Linux 而不是 Windows 連接時沒有問題
有沒有人有任何線索或我可以嘗試的事情?謝謝
通常這是Nagle 算法的標誌,您可以關閉該套接字選項。
(我之前在其他情況下也看到過 Linux 和 Windows 之間類似的 TCP 延遲。在一種情況下,這是由 TCP Windows 大小和 PSH(推送)標誌之間的互動引起的,導致 Windows 確認延遲和/或重試。)