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 -O
funcionou.
A -O
opçã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.