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,这更适合性能、吞吐量和可用性。

相关内容