Die scp exec-Anforderung ist auf Kanal 0 fehlgeschlagen

11

Ich versuche, SCP-Dateien von einem Computer auf einen anderen zu übertragen, aber ich bekomme

Ausführungsanforderung auf Kanal 0 fehlgeschlagen ".

Wenn ich jedoch SSH verwende, kann ich problemlos zum Computer gelangen. Ich verwende die SCP-Funktion in Cygwin, wenn das hilft.

Bei der Online-Suche habe ich über die Datei ".bashrc" gesprochen. Die einzige, die ich gefunden habe, ist "bash.bashrc".

Dies ist der Befehl, den ich verwendet habe:

scp /filelocation/file user@hostname:/folderlocation

Ich habe es auch mit der IP-Adresse anstelle des Hostnamens versucht, aber ich habe das gleiche Ergebnis.

Ich habe überprüft, ob der Remote-Standort den SCP-Befehl hat.

Feuerball
quelle

Antworten:

0

Um die .bashrc-Datei (und andere Dateien, die mit einem Punkt beginnen) anzuzeigen, müssen Sie dies tun

ls -a

Die einfache Problemumgehung besteht darin, die Dateien .profile, .bashrc, .login und .bash_profile umzubenennen, damit sie nicht aufgenommen werden. Diese werden als Shell-Startdateien bezeichnet.

Wenn Ihr scp jetzt funktioniert, liegt die Antwort in einer dieser Dateien.

Grundsätzlich sendet eine der Shell-Startdateien die Ausgabe zurück, was die laufende SSL-Aushandlung durcheinander bringt.

Es kann so einfach sein, spezielle Escape-Sequenzen zu senden, um den Fenstertitel festzulegen. Ein weiterer Schuldiger ist der Befehl stty.

Sie möchten die Ausgabe an das Terminal nur dann umgeben, wenn Sie mit angemeldet sind

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
Strobelight
quelle
0

Ich stimme strobelight zu, dass dieser Fehler häufig von der Ausgabe von .bashrc (und anderen) Bash-Initialisierungsdateien herrührt.

Es gibt jedoch einige in Bash integrierte Methoden zum Testen auf interaktive Shells: erweiterte Referenz für Bash-Scripting-Anleitungen, Referenz für Serverfehler .

Was ich am häufigsten gesehen habe, ist, $ PS1 zu testen, wann die Ausgabe erfolgen soll:

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