scp preso ao tentar copiar arquivos do Linux para o Windows

1

Eu uso a seguinte sintaxe scp para transferir muitos arquivos do Linux red-hat 5 para máquina Windows (sob diretório Temp),

Observações:

  • servidor SSH já instalado na máquina Windows
  • Eu uso essa linha em meus scripts de shell

     sshpass -p '$password'  /usr/bin/scp -o StrictHostKeyChecking=no  $FILE [email protected]:'D:/Temp'
    

na maioria dos casos, os arquivos foram transferidos com êxito

mas às vezes scp preso durante a transferência de arquivos? , apesar de conectividade é ok como ping etc

e eu recebo o seguinte erro do scp (depois de um longo tempo)

   ssh_exchange_identification: read: Connection reset by peer
  1. por que o scp não é estável e está preso? e qual a solução para este problema?
  2. O que os outros são uma boa alternativa para o scp? , (considere que preciso de 100% de estabilidade)
por Eytan 29.07.2013 / 22:49

3 respostas

1

Isso pode ser um sinal de problemas de rede - o ping não captura todos os problemas. O culpado mais provável é um firewall ou dispositivo NAT que está descartando a conexão.

Adicionando -v para saída detalhada para scp lhe dará mais detalhes sobre o que está fazendo, e pode dar uma pista melhor sobre o que está acontecendo. Se você quiser postar a saída de uma transferência com falha com a opção -v, talvez eu possa dar uma resposta mais exata.

Conexão redefinida por peer significa exatamente isso - o servidor de destino redefiniu / fechou a conexão. Os dispositivos NAT farão isso se não houver dados enviados por algum tempo ou se não estiverem funcionando corretamente.

Alguns ISPs farão isso como uma forma de modelagem de tráfego para limitar o tráfego peer to peer - infelizmente, alguns aplicam-no também a conexões SSH. Isso provavelmente não será um problema nas conexões comerciais, mas se uma das extremidades tiver uma conexão residencial com a Internet, isso poderá se aplicar.

O servidor SSH no Windows também pode ser escamoso. Você não especifica qual deles usa, mas nem todos funcionam de maneira confiável.

Em um exemplo da vida real de estranheza, eu tinha um amigo que tinha problemas semelhantes - acabou sendo um bug no firmware de seu modem a cabo que corrompeu um em cada milhão de pacotes. Raro o suficiente para que pequenas transferências funcionassem perfeitamente, mas as grandes morreriam toda vez.

Ou podem ser apenas problemas normais da Internet. A internet não é 100% confiável e nunca será. Às vezes, as conexões falham, às vezes os pacotes se perdem ao longo do caminho. Às vezes, os minúsculos homens dentro do cabo ethernet entram em greve e não sentem vontade de carregar seus pacotes. Então você precisa de uma ferramenta que possa lidar com isso e continuar tentando até conseguir.

O rsync seria uma escolha melhor aqui, simplesmente porque permite retomar. Esta postagem no blog explica como configurar o rsync com a continuação no lugar de scp. Se necessário, você pode escrever um script de shell simples para verificar o código de saída do rsync e continuar tentando se ele falhar. Esta outra postagem no blog tem um exemplo de tal roteiro.

    
por 03.08.2013 / 04:34
2

What the others good alternative for scp ? , (consider that I need 100% of stability)

Considere lançá-lo e usar o WinSCP da máquina Windows para conectar e capturar os arquivos no servidor Linux.

    
por 06.08.2013 / 15:21
0

Eytan, você não mencionou se é capaz de instalar outras ferramentas no Windows e, se precisar de uma conexão criptografada, aqui estão os meus comentários e sugestões:

  • Hoje eu tenho problema com o rsync para copiar grandes estruturas de árvore com muitos arquivos ... onde ele simplesmente falha, mas a coisa boa quando você o executa novamente, eles "continuam" de onde eles param antes ....
  • O rsync precisa de utilitários ssh ou rsh ... supondo que o problema seja seu servidor ssh com o rsync, você criará um novo ponto de falha. Mas pessoalmente testaria antes de descartar essa solução, pois é versátil.

Minha sugestão

  • Tenho uma ótima experiência ao usar o cygwin para soluções como as suas necessidades.
    Então, instale os pacotes básicos + abra ssh + cygrunsrv (para criar o serviço do windows).
  • Então, para evitar reescrever sua solução, tente usar o servidor cygwin ssh em vez do windows ou qualquer outro servidor ssh que você usa.
  • Como alternativa, você pode instalar um servidor rsh e testá-lo com o rsync.
  • Outra opção é um servidor FTP (proftpd ou pureftpd) e use o ncftp / ncftpput no linux para conectar-se ao seu Windows.
    O ncftp capaz de identificar arquivos preexistentes / antigos e decidir se sobrescreve ou não diretórios recursivos. Você provavelmente pode encontrar o ncftp RPM em seu Red Hat DVD.
    Considerando o desempenho, o FTP será o melhor ....

Como você pode ver, eu gosto do cygwin, ele me ajuda várias vezes no Windows ... e é uma ferramenta "obrigatória" no meu desktop Windows.

Boa sorte.

    
por 08.08.2013 / 03:26