Żądanie wykonania scp nie powiodło się na kanale 0

11

Próbuję przesyłać pliki SCP z jednego komputera na drugi, jednak otrzymuję

żądanie wykonania nie powiodło się na kanale 0 ”.

Kiedy jednak korzystam z SSH, mogę bez problemu dostać się do komputera. Korzystam z funkcji SCP w Cygwin, jeśli to pomaga.

To, co znalazłem podczas wyszukiwania online, mówiło o pliku „.bashrc”, jednak jedynym, który znalazłem, jest „bash.bashrc”.

Oto polecenie, którego użyłem:

scp /filelocation/file user@hostname:/folderlocation

Próbowałem również z adresem IP zamiast nazwy hosta, ale mam ten sam wynik.

Sprawdziłem, czy strona zdalna ma polecenie SCP.

kula ognia
źródło

Odpowiedzi:

0

Aby zobaczyć plik .bashrc (i inne pliki zaczynające się od kropki), musisz to zrobić

ls -a

Prostym obejściem jest zmiana nazw plików .profile, .bashrc, .login, .bash_profile, aby nie zostały uwzględnione. Są to tak zwane pliki startowe powłoki.

Jeśli twój scp teraz działa, odpowiedź leży w jednym z tych plików.

Zasadniczo jeden z plików startowych powłoki odsyła dane wyjściowe, co zakłóca trwającą negocjację ssl.

Może to być tak proste, jak wysłanie specjalnych sekwencji specjalnych, aby ustawić tytuł okna. Kolejnym winowajcą jest polecenie stty.

Chcesz otaczać wyjście do terminala tylko po zalogowaniu

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
światło stroboskopowe
źródło
0

Zgadzam się ze światłem strobelight, że ten błąd często pochodzi z danych wyjściowych z plików inicjujących .bashrc (i innych) bash.

Istnieje kilka sposobów, bash-wbudowane do badania powłok interaktywnych jednak: zaawansowany bash-Scripting Guide odniesienia, ServerFault referencyjnych.

To, co najczęściej widziałem, to testowanie PS1 $, kiedy należy wykonać wyjście:

if [ "$PS1" ]; then
    echo "some message"
fi
Neil Katin
źródło