Ssh

scp 和 sftp 因“client_loop: send disconnect: Broken pipe”而失敗(MacOS 11.3 問題?)

  • October 19, 2021

截至 2 天前,scp對於大於 ~200 KB 的文件,我嘗試從筆記型電腦到伺服器的文件始終失敗,並出現錯誤*“client_loop: send disconnect: Broken pipe”這恰逢我的筆記型電腦升級到 MacOS 11.3(從 11不管之前是什麼*)。

$ dd if=/dev/urandom of=test.dat count=400 2> /dev/null && ls -l test.dat && scp test.dat $DST
-rw-r--r--  1 xxxx  staff  204800 Apr 28 11:27 test.dat
test.dat                                        0%    0     0.0KB/s   --:-- ETAclient_loop: send disconnect: Broken pipe
lost connection

這絕對是新的,因為我幾乎每天都在使用 scp 並且在更新之前從未遇到過問題。這種行為在我用作目標的 2 個不同的伺服器架構(NAS 和 Raspberry Pi - 以排除偶然的伺服器配置錯誤)以及使用我的 Linux 桌面作為客戶端(也沒有問題)上也可見。同樣奇怪的是,無論是普通 SSH 還是 Homebrew SSH 安裝都出現了問題,這暗示了 SSH 客戶端配置問題或網路堆棧中的錯誤。我很好奇是否有其他人在觀察同樣的問題。sftp表現出同樣的問題。

在伺服器端,這是我在日誌中得到的:

May  1 23:27:27 myhost sshd[21774]: Bad packet length 116136902.
May  1 23:27:27 myhost sshd[21774]: ssh_dispatch_run_fatal: Connection from user pi XXX.XXX.XXX.XXX port 59948: Connection corrupted

PS一

$$ very imperfect $$解決此問題的方法是使用足夠低的頻寬限制(-l選項),但這並不是很好,因為它會使傳輸速度非常緩慢。

我發現在 Norton Internet Security 上禁用“防火牆 -> 連接阻止”解決了我的問題。

不過,在問題得到解決之前,我可能會使用-lscp 選項。

嘗試編輯您的/etc/ssh/sshd_config or ~/.ssh/config文件並添加/更新;

ClientAliveInterval 300

https://man.openbsd.org/sshd_config.5#ClientAliveInterval

引用自:https://serverfault.com/questions/1062076