Scp зависает при копировании

Обновлено: 19.05.2024

, потом напечатаны три строки и файл не копируется. Однако я могу подключиться к серверу через ssh без проблем:

Как сделать работу scp?

scp, под капотом, настраивает туннель с помощью ssh, а затем передает файл по этому туннелю с помощью команды ssh на дальнем конце, чтобы поймать файл по мере его поступления. Это проиллюстрировано использованием tar и ssh для копирования структуры каталогов, сохраняющей владение и времена создания со следующим команды:

получить его назад.

/ .bashrc является источником для неинтерактивных Логинов. Если есть эхо или команда, которая выводит что-либо, это сломает протокол SCP.

Edit: вы уверены, что вводите допустимый путь в команде scp? Например:

- это ярлык для вашего домашнего каталога. например, /home/

это не отвечает на вопрос напрямую, но может быть полезно для таких людей, как я, ищущих решение с замораживанием scp при передаче файлов между 2 удаленными хостами.

от человека scp:

- B выбирает пакетный режим (предотвращает запрос паролей или парольные фразы.)

- o ssh_option можно использовать для передачи параметров в ssh в формате, используемом в нет отдельного флага командной строки scp. Полная информация о перечисленные ниже параметры и их возможные значения см. В файле ssh_config(5).

однако я сдался и переключился на sftp. Это намного быстрее, так как он использует прямое соединение между удаленными хостами. Вы должны включить

/.однако файл shh / config машины, на которой выполняется сценарий. Конечно это только решение, если удаленные машины в сети доверенных.

Всем доброго времени суток. Недавно установил Linux Slackware 10.2 Попробовал скопировать scp файл на эту систему с другой машины. Откуда бы не копировал, вместо копирования файла после успешной авторизации почему-то запускается shell. Вернее, пытается запуститься. Во всяком случае, отрабатывает скрипт bash_profile. Авторизацию пробовал и через пароль, и через файл с ключом, все едино. Копировать пробовал с разных систем, результат один и тот же. Где могут быть грабли? Сколько работаю со Slackware, такого не видел никогда.

Вот так копировал. (Имена файлов, пути, IP адреса, имена пользователей даны от фонаря).

Если в стартовых (конфигурационных) файлах bash_a (.bashrc, .bash_profile, . ) будут команды/программы пишущие на stdout, то scp не будет работать

В соответствии с потребностями эксперимента я установил MTU на 8000 . После этого, когда я использую scp для копирования больших файлов, он останавливается с помощью 0.00% . Я попытался scp -l или scp -C и повернул ---- +: = 5 =: + ---- вкл /выкл, но все равно не сработало. И я не могу изменить размер MTU для сравнения результатов эксперимента. Есть ли другой способ помочь?

2 ответа

Попытка найти комплексное решение, поскольку в зависимости от вашей ситуации может быть несколько проблем и ограничений.

Опция сжатия

опция -C в scp может ускорить передачу, уменьшая вероятность того, что передача остановится.

Предельная скорость

Не решение для OP, так как MTU исправлен в этой ситуации (и, вероятно, не проблема здесь), но если виновником является медленное/ненадежное соединение между двумя дисками, установка ограничения скорости уменьшает задержки, которые делают TCP Стойка связи - за счет более медленной передачи конечно. Это потому, что scp захватывает всю пропускную способность, которую он может получить, если вы не укажете максимальную скорость передачи данных в килобитах, например:

Предельная скорость

Не решение для OP, так как MTU исправлен в этой ситуации (и, возможно, проблема не в этом), но если виновником является медленное /ненадежное соединение между двумя приводами, установка ограничения скорости уменьшает задержки, которые делают Зависание TCP-соединения - за счет более медленной передачи конечно. Это связано с тем, что scp захватывает всю пропускную способность, которую он может получить, если вы не укажете максимальную скорость передачи данных в килобитах, например:

Параметр сжатия

scp -C может ускорить передачу, уменьшив вероятность того, что передача глохнет.

Другой

Если ничего не помогает, this перечисляет еще несколько потенциальных решений, которые здесь не включены.

Более экзотический hpn bug тоже может быть виноват.

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

rsync

Мой предпочтительный вариант: использование rsyncне создает этой проблемы и, на мой взгляд, более универсально, например. он отслеживает, какие файлы уже существуют, поэтому, если соединение когда-либо прервется, его можно будет найти с того места, где оно было прервано - попробуйте флаг --partial - - среди прочего .

ты можешь просто сделать

Я проверял это несколько раз, когда scp давал мне ту же проблему, что и вам, - и теперь я просто использую rsync по умолчанию.

Отключение TCP SACK

Как упоминается ОП и .

MTU сетевой карты

MTU сетевой карты

Снова исправление MTU , но не обязательно специально для передачи:

Отключение TCP SACK

Как упоминается ФП, и здесь .

Rsync

Мой предпочтительный вариант: использование rsync не создает этой проблемы и немного более универсален, на мой взгляд, например он отслеживает, какие файлы уже существуют, поэтому, если соединение когда-либо прервется, его можно будет найти с того места, где оно было прервано - попробуйте --partial пометить тоже - среди прочего .

вы можете просто сделать

Я проверял это несколько раз, когда scp доставляло мне ту же проблему, что и вам - и теперь я просто использую rsync по умолчанию.

Другие

Если ничего не помогает, это перечисляет еще несколько потенциальных решений, которые здесь не включены.

Более экзотическая ошибка hpn может быть и виноват тоже.

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

В соответствии с потребностями эксперимента я установил MTU в 8000 . После этого, когда я использую scp для копирования больших файлов, он остановился с 0.00% . Я пробовал scp -l или scp -C и включал/выключал tcp_sack , но он все равно не работал. И я не могу изменить размер MTU для сравнения результатов эксперимента. Есть ли другой способ помочь?

Попытка комплексного решения, так как может быть несколько проблем и ограничений в зависимости от вашей ситуации.

Читайте также: