scp -3 não funciona mais

scp -3 não funciona mais

Estou tentando transferir um arquivo grande entre dois hosts remotos (ambos em sub-redes diferentes). Achei este comando funcionando pela primeira vez:

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

O comando funcionou da primeira vez, agora quando tento executá-lo novamente para transferir os outros arquivos, ele nunca transfere. Em vez disso, recebo uma solicitação de senha e ela sai com um código de saída 1. A execução -vme dá:

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

Alguém pode me dizer por que de repente esse comando não funciona mais? verifiquei /var/log/sysloge não achei nada..

Responder1

Você pode usar -vvvpara obter mais informações do log. Mas o problema -3é que você não pode obter razoavelmente nenhuma informação de depuração sobre os erros dos lados remotos (bug upstream com patch). As mensagens de erro estão sendo enviadas de um lado removido para o outro e não há lugar para exibi-las (sem introduzir alguma complexidade).

Para ter uma ideia do que pode dar errado, provavelmente é mais fácil garantir que o arquivo de origem esteja devidamente legível (e não haja nenhum erro de digitação no nome) e que a pasta de destino seja gravável, que haja espaço em disco suficiente e assim por diante:

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

Outra possibilidade é construir o OpenSSH a partir do código-fonte e aplicar o patch vinculado acima. Deverá imprimir os erros no cliente (deve bastar fazer isso apenas na sua máquina).

Ou apenas use rsync, que é mais adequado para desempenho, rendimento e usabilidade.

informação relacionada