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 -O
hat geklappt.
Die -O
Option 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.