Não tenho certeza do que está acontecendo, mas ultimamente não consigo copiar nenhum arquivo para o local do meu servidor remoto. Tentei o rsync local e recebi a seguinte mensagem de erro:
mut@mylocalcomputer:~$ rsync -chavzP --stats [email protected]:/home/users/mut/thedirectoryIneed /User/mut/
[email protected]'s password:
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-42/rsync /compat.c(61) [receiver=2.6.9]
Então eu usei o rsync e segui as instruções para diagnosticar o problema com o seguinte (entrada na linha de comando local):
ssh [email protected] /bin/true > out.dat
insira a senha e não receba nada de volta - apenas gerou um novo prompt).
(2) Então tentei scp
, e toda vez que scp
saio ssh
do local, recebo a seguinte saída exibindo tipo de arquivo, tamanho, permissões e nome de arquivo, mas nada mais:
C0644 183 fileineedfromremoteserver.cpp
mas o arquivo não é copiado (ou pelo menos não consigo encontrá-lo em nenhum lugar do meu computador).
Alguma sugestão sobre qual pode ser o problema ou o que mais eu poderia tentar?
nota: Meu local é o terminal CLI padrão no OSX (BSD) e o servidor é GNU linux. Nunca tive problemas antes de copiar arquivos do servidor, e a única coisa que consigo pensar que mudou desde então é que em algum momento digitei o comando para gerar uma chave SSH local (em uma tentativa fracassada de tentar e automatizar meu login no servidor sem precisar digitar minha senha todas as vezes). Duvido que isso tenha algo a ver com isso.
Responder1
Já faz muito tempo que não vejo esse erro, mas o IIRC, quando o vi, foi devido a algo no arquivo rc do shell errado que estava gerando texto durante o login.
Os arquivos em questão são específicos do shell que você está usando, mas veja como você pode corrigi-lo para o bash.
Enquanto estiver conectado à conta no sistema remoto (mambo.m66.com), execute o seguinte:
. .bashrc
(observe que o primeiro ponto não é um erro de digitação). Se você verqualquersaída ao executar esse comando, você deve mover o comando dentro do arquivo .bashrc para .bash_profile.
abydos:~ jonv$ touch sourcefile
abydos:~ jonv$ echo 'echo This should work.' > .bash_profile
abydos:~ jonv$ rsync jonv@localhost:sourcefile destfile
abydos:~ jonv$ echo 'echo This should NOT work.' > .bashrc
abydos:~ jonv$ rsync jonv@localhost:sourcefile destfile
protocol version mismatch -- is your shell clean?
(see the rsync man page for an explanation)
rsync error: protocol incompatibility (code 2) at /SourceCache/rsync/rsync-42/rsync/compat.c(61) [receiver=2.6.9]
Existem muitos recursos na rede se você quiser ler mais sobre isso. Você pode pesquisar por '.bashrc vs .bash_profile' e obter bastante.