为什么SCP会停滞?我该如何解决?


Answers:


71

发生这种情况是因为scp尝试获取尽可能多的带宽,并且任何延迟(例如由防火墙等引起的延迟)都可能使其停止。限制带宽(使用-l选项)将解决此问题。

例如,您可能希望将带宽限制为1 MB / s(= 8192 Kbits / s):

 scp -l 8192 <file> <destination>

资料来源:http://www.aixmind.com/?p = 1371-Wayback Machine


感谢您的回答和来源链接。但是我认为您的消息来源说这-l 8192意味着8192 Kbit / -ls ,并且可能以1 Mbit / s的速度工作(如今似乎有些过时了)。
elmicha

2
@elmicha 8192Kb == 1MB
Lelouch

@Eknath糟糕,您是对的。
elmicha 2011年

2
需要澄清的是:该示例将scp的带宽限制为8192 Kbit / second。来源文章的作者建议,该数字应适用于最高1 Mbit /秒的连接。
Erwin Wessels 2014年

1
像魅力一样工作:)
索拉布,2016年

5

我设法通过使用rsync解决了它:

rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /tmp/bigfile.txt user@host.com:/tmp/

2

您有可能在Cisco ASA防火墙后面吗?如果是这样,请关闭“序列号随机化”,这将有很大帮助-如果您使用的是服务器中具有Broadcom NIC的Cisco ASA,请禁用TCP Offload(ethtool -K $ INTERFACE tso off gso off gro off) 。


那是天才。该更改是永久的还是我需要将命令放在某个地方?为了清楚起见,您必须在NIC上而不是在cscotun接口上进行设置。
mjaggard

1

鉴于在scp停止时我们收到的错误消息,我怀疑是加密失败。“无法确定主机'myserver(10.10.11.12)的真实性。ECDSA密钥指纹为SHA256:+ zkyskXlxVQ0kRorLW26pzprIYbsM4N3hbaDLz1RNpo”考虑到这一点,我运行了“ scp -c aes128-ctr /tmp/test.dan/bigfile。 src myserver:/ tmp / bigfile”。scp已成功使用备用密码。默认密码是否会占用缓冲区空间?

可以尝试使用备用密码添加“ -c”,看看是否可以解决您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.