scp -3 больше не работает

scp -3 больше не работает

Я пытаюсь передать большой файл между двумя удаленными хостами (оба в разных подсетях). Я обнаружил, что эта команда работает с первого раза:

scp -3 root@foo:/path/to/largefile user@bar:/path/to/where/it/should/go/

Команда сработала в первый раз, теперь, когда я пытаюсь запустить ее снова, чтобы перенести другие файлы, она не переносится. Вместо этого я получаю запрос на пароль, а затем она завершается с кодом выхода 1. Запуск -vдает мне:

debug1: Sending command: scp -v -f /run/sr-mount/3e3a905f-28ad-01b4-d50a-1ffe151ed28a/debian-8.8.0-amd64-CD-1.iso
Sending file modes: C0644 660602880 debian-8.8.0-amd64-CD-1.iso
Sink: C0644 660602880 debian-8.8.0-amd64-CD-1.iso
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype [email protected] reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2480, received 2372 bytes, in 0.1 seconds
Bytes per second: sent 32882.6, received 31450.6
debug1: Exit status 1
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: channel 0: free: client-session, nchannels 1
debug1: fd 0 clearing O_NONBLOCK
debug1: fd 1 clearing O_NONBLOCK
Transferred: sent 2904, received 2964 bytes, in 3.3 seconds
Bytes per second: sent 893.5, received 912.0
debug1: Exit status 1

Может кто-нибудь сказать, почему вдруг эта команда больше не работает? Я проверил /var/log/syslogи ничего не нашел..

решение1

Вы можете использовать -vvvдля получения дополнительной информации из журнала. Но проблема в том, -3что вы не можете разумно получить какую-либо отладочную информацию об ошибках с удаленных сторон (ошибка в апстриме с исправлением). Сообщения об ошибках отправляются с одной удаленной стороны на другую, и нет места для их отображения (без внесения некоторой сложности).

Чтобы понять, что может пойти не так, проще всего убедиться, что исходный файл можно прочитать (и в его имени нет опечаток), а целевая папка доступна для записи, на диске достаточно места и т. д.:

ssh root@foo stat /path/to/largefile
ssh user@bar stat /path/to/where/it/should/go/

Другая возможность — собрать OpenSSH из исходников и применить указанный выше патч. Он должен вывести ошибки в клиенте (достаточно сделать это только на вашей машине).

Или просто используйте rsync, что больше подходит с точки зрения производительности, пропускной способности и удобства использования.

Связанный контент