scp-exec-Anforderung ist auf Kanal 0 fehlgeschlagen

scp-exec-Anforderung ist auf Kanal 0 fehlgeschlagen

Ich versuche, Dateien per SCP von einem Computer auf einen anderen zu übertragen, erhalte jedoch

Exec-Anforderung auf Kanal 0 fehlgeschlagen".

Wenn ich jedoch SSH verwende, kann ich problemlos auf die Maschine zugreifen. Ich verwende die SCP-Funktion in Cygwin, falls das hilft.

Bei meiner Online-Suche habe ich etwas über die Datei „.bashrc“ herausgefunden, allerdings habe ich nur die Datei „bash.bashrc“ gefunden.

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 das Ergebnis war dasselbe.

Ich habe überprüft, ob die Remote-Site über den SCP-Befehl verfügt.

Antwort1

Dies ist mir passiert, als ich versucht habe, einige Dateien an mein Synology NAS zu senden.

Das Laufen scp -Ohat geklappt.

Die -OOption verwendet für Dateiübertragungen das alte SCP-Protokoll anstelle des SFTP-Protokolls.

Antwort2

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

ls -a

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

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

Im Grunde sendet eine der Shell-Startdateien eine Ausgabe zurück und das bringt die laufende SSL-Verhandlung durcheinander.

Es könnte so einfach sein wie das Senden spezieller Escape-Sequenzen, um Ihren Fenstertitel festzulegen. Ein weiterer Übeltäter ist der Befehl stty.

Sie möchten die Ausgabe auf dem Terminal nur dann einblenden, wenn Sie angemeldet sind mit

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

Antwort3

Ich bin einverstanden mitBlitzlichtdass dieser Fehler häufig auf die Ausgabe von .bashrc (und anderen) Bash-Initialisierungsdateien zurückzuführen ist.

Es gibt jedoch einige in Bash integrierte Möglichkeiten zum Testen interaktiver Shells:Erweiterter Leitfaden für Bash-SkripteReferenz,ServerfehlerReferenz.

Am häufigsten habe ich gesehen, dass $PS1 getestet wird, um zu ermitteln, wann eine Ausgabe erfolgen soll:

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

Antwort4

Da nicht alle Clients (oder Client-Konten) die Verwendung von SSH zum Bearbeiten der Anmeldeskripte unterstützen, wäre eine gültige Alternative zum Ausprobieren/Verwenden von SFTP anstelle von SCP.

verwandte Informationen