CentOS 7: Keine Verbindung über WinSCP, wenn Bash ausgeführt wird

415
P4tR

Ich verwende CentOS Server 7 auf einer VM (ESXi) mit Root-Berechtigungen. Ich habe ein Bash-Skript (in meinem Verzeichnis /etc/profile.d/), das sofort nach dem Login ausgeführt wird. Bevor ich meine .sh-Datei in dem Verzeichnis erstellt habe, gab es kein Problem, eine Verbindung mit meiner VM über WinSCP herzustellen. Nach dem Erstellen der Datei und dem Neustart des Systems kann ich keine Verbindung mehr herstellen. OpenSSH ist installiert .. Scheint, dass die Bash-Ausführung die Verbindung blockiert. Wenn ich meine .sh-Datei anschließend über die Konsole lösche, wird die Verbindung erneut hergestellt. Ist das ein CentOS-Problem? Nie hatte dieses Problem unter Ubuntu Server.

Fehler bekomme ich:

Das SFTP-Protokoll kann nicht initialisiert werden. Läuft auf dem Host ein SFTP-Server?

Irgendwelche Ideen? Danke im Voraus!

0
Was ist in diesem Skript? Eugen Rieck vor 6 Jahren 1
Ich könnte posten, was sich in dem Skript befindet, aber es sind hunderte Zeilen. Unter Ubuntu Server gab es nie Probleme. Selbst wenn es einige Fehler enthält, sollte dies die Verbindung nicht blockieren? P4tR vor 6 Jahren 0
Es liegt in Ihrer Verantwortung, [Minimales, Vollständiges und Überprüfbares Beispiel] (https://stackoverflow.com/help/mcve) zu posten. Bis dahin können Sie keine bessere Antwort erhalten, als @tripleee gepostet hat (was höchstwahrscheinlich die richtige Antwort ist). + Warum glaubst du, dass ein Fehler die Verbindung nicht blockieren kann? Martin Prikryl vor 6 Jahren 0
Sie haben Recht. Ich habe den Skriptinhalt durch ein einfaches "Echo" zum Testen ersetzt. Und diesmal ist die Verbindung nicht blockiert. Also sind die Skripts schuld. Danke für Ihre Hilfe! P4tR vor 6 Jahren 0

1 Antwort auf die Frage

1
tripleee

Sie zeigen uns Ihr Skript nicht, daher ist dies offensichtlich etwas spekulativ. Aber höchstwahrscheinlich sollte Ihr Skript nicht vorhanden sein, profile.dda es eine Art Benutzerinteraktion erfordert.

Das Profil sollte ausschließlich für Dinge reserviert sein, die auch in nicht interaktiven Sitzungen ausgeführt werden müssen.

Der richtige Ort für interaktive Funktionen ist wahrscheinlich überhaupt nicht in Ihren Anmeldeskripten, aber so etwas, zB in Ihrem, $HOME/.bash_profilekann den Schaden für nicht interaktive Sitzungen zumindest vermeiden.

case $- in *i*) invoke your script here;; esac 

Wenn Sie bereits über ein Konto verfügen .bash_profile, enthält es möglicherweise bereits eine case $-Anweisung, die Sie ändern können, anstatt eine zweite hinzuzufügen.

Ich habe mein Skript von /etc/profile.d in mein $ HOME-Verzeichnis verschoben. Jetzt wird es von .bash_profile ausgeführt und WinSCP kann sich problemlos verbinden. Vielen Dank! P4tR vor 6 Jahren 0