Почему scp зависает? Как мне решить это?

52

Когда я пытался скопировать файл (размером) по сети, используя scp, я получаю сообщение об ошибке. <file> stalled Почему это происходит? Как мне решить это?

Лелуш Лампероуг
источник
Мне нравится Rclone для этого; У меня никогда не было проблем с этим.
Хатшепсут
Я отменил и перезапустил команду scp, и проблема исчезла для меня
килоджоулей

Ответы:

72

Это происходит потому, что scpон пытается захватить как можно большую пропускную способность, и любая задержка (со стороны брандмауэра и т. Д.) Может остановить его. Ограничение пропускной способности (с опцией -l) это исправит.

Например, вы можете захотеть ограничить полосу пропускания 1 МБ / с (= 8192 Кбит / с):

 scp -l 8192 <file> <destination>

Источник: http://www.aixmind.com/?p=1371 - Wayback Machine

Мур
источник
Спасибо за ваш ответ и ссылку на источник. Но я думаю, что ваш источник говорит, что это -l 8192означает 8192 Кбит / с, и это -lможет работать до 1 Мбит / с (что кажется немного устаревшим в настоящее время).
elmicha
2
@elmicha 8192Kb == 1 МБ
Лелуш Лампероуг
@Eknath Ой, ты прав.
elmicha
2
Просто для пояснения: пример ограничивает пропускную способность scp до 8192 Кбит / с. Автор исходной статьи предполагает, что это число должно нормально работать для соединений со скоростью до 1 Мбит / с.
Эрвин Вессельс
1
Работал как очарование :)
Saurabh
5

Мне удалось решить это с помощью rsync:

rsync -avz -e "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /tmp/bigfile.txt user@host.com:/tmp/
user1453912
источник
2

Есть ли шанс, что вы находитесь за брандмауэром Cisco ASA? Если это так, отключите «рандомизацию порядкового номера», и это очень поможет - также отключите разгрузку TCP (ethtool -K $ INTERFACE tso off gso off gro off), если вы используете Cisco ASA с сетевыми картами Broadcom на вашем сервере. ,

dotwaffle
источник
Это гений. Это изменение является постоянным или мне нужно поместить команду где-нибудь? Просто чтобы прояснить, вы должны установить это на вашей сетевой карте, а не на интерфейсе cscotun.
Мьяггард
1

Учитывая сообщение об ошибке, которое мы получили, когда scp остановился, я заподозрил, что шифрование не сработало. «Подлинность хоста« myserver (10.10.11.12) »не может быть установлена. Идентификатор ключа ECDSA - SHA256: + zkyskXlxVQ0kRorLW26pzprIYbsM4N3hbaDLz1RNpo» Имея это в виду, я запустил «scp -c aes128-ctr /tmp/igile». src myserver: / tmp / bigfile ". scp был успешным с альтернативным шифром. Есть ли проблема с шифром по умолчанию, уносящим буферное пространство?

Попробуйте добавить «-c» с альтернативным шифром и посмотреть, разрешит ли он вашу задержку.

Дэн Снейвли
источник