Próbuję scp
utworzyć plik z serwera na komputer lokalny, ale pojawia się następujący błąd:
protocol error: unexpected <newline>
Oto moja składnia:
scp user@server:/path/to/file .
Nie działało to na tym serwerze, ale potem wypróbowałem to samo polecenie na innym serwerze, więc mogę jedynie założyć, że coś jest nie tak z moim serwerem, a nie składnią scp
polecenia.
Jakieś pomysły?
~/.bashrc
na serwerze.Odpowiedzi:
Jeden ze skryptów logowania (.bashrc / .cshrc / itp.) Wysyła dane do terminala, kiedy nie powinno. Powoduje to błąd scp podczas łączenia się i przygotowywania do kopiowania, gdy zaczyna otrzymywać dodatkowe dane, których się nie spodziewa. Usuń generowane tutaj dane wyjściowe.
Możesz sprawdzić, czy twój terminal jest interaktywny i wyświetlać tylko tekst, używając następującego kodu w bashrc. Istnieje coś równoważnego również dla innych powłok:
źródło
Znalazłem rozwiązanie. Mój plik .bashrc i .bash_logout zostały ustawione tak, aby wyświetlały mi informacje przy każdym logowaniu / wylogowywaniu. Najwyraźniej ta nowa linia odbiła się echem na scp. Skomentowałem moje wypowiedzi echa i to załatwiło sprawę!
źródło
Miałem podobny problem. Powód był następujący: w moim .bashrc mam polecenie „echo” tekst ”w celu wydrukowania statusu proxy. I to „echo” jakiegoś tekstu spowodowało, że scp nie powiodło się. Więc usuwając „echo” w pliku .bashrc, przesyłam pliki za pomocą scp.
źródło