solicitação scp exec falhou no canal 0

solicitação scp exec falhou no canal 0

Estou tentando transferir arquivos SCP de um computador para outro, mas recebo

solicitação exec falhou no canal 0".

No entanto, quando uso o SSH, posso acessar a máquina sem problemas. Estou usando a função SCP no Cygwin, se isso ajudar.

O que encontrei ao pesquisar online falava sobre o arquivo ".bashrc", porém o único que encontrei foi "bash.bashrc".

Este é o comando que usei:

scp /filelocation/file user@hostname:/folderlocation

Também tentei com o endereço IP em vez do nome do host, mas obtive o mesmo resultado.

Verifiquei se o site remoto possui o comando SCP.

Responder1

Isso aconteceu comigo ao tentar enviar alguns arquivos para meu Synology NAS.

Correr scp -Ofuncionou.

A -Oopção usa o protocolo SCP legado para transferências de arquivos em vez do protocolo SFTP.

Responder2

Para ver o arquivo .bashrc (e outros arquivos começando com um ponto), você precisa fazer

ls -a

A solução simples é renomear os arquivos .profile, .bashrc, .login, .bash_profile para que eles não sejam incluídos. Eles são conhecidos como arquivos de inicialização do shell.

Se o seu scp funcionar agora, a resposta está em um desses arquivos.

Basicamente, um dos arquivos de inicialização do shell está enviando a saída de volta e isso atrapalha a negociação SSL em andamento.

Poderia ser tão simples quanto enviar sequências de escape especiais para definir o título da janela. Outro culpado é o comando stty.

Você deseja surround a saída para o terminal somente quando estiver logado com

if tty -s >/dev/null 2>&1; then
    # here if have a real terminal associated to send stty commands 
    # or other special escape sequences to terminal
fi

Responder3

Eu concordo comluz estroboscópicaque esse erro geralmente vem da saída de .bashrc (e outros) arquivos de inicialização do bash.

Existem algumas maneiras incorporadas ao bash para testar shells interativos:guia avançado de script bashreferência,falha no servidorreferência.

O que tenho visto com mais frequência é testar $PS1 para saber quando fazer a saída:

if [ "$PS1" ]; then
    echo "some message"
fi

Responder4

Como nem todos os clientes (ou contas de clientes) suportarão o uso de ssh para mexer nos scripts de login, uma alternativa válida para tentar/usar seria sftp em vez de scp.

informação relacionada