FTP Tunnel über SSH führt zu Fehler
FTP Tunnel über SSH führt zu Fehler
Hallo,
Ich habe seit kurzem auf meinem Server Debian 4.0 installiert. Lief soweit ganz gut (bin von openSuSE auf Debian umgestiegen um mich ein wenig mehr mit Linux zu beschäftigen, nicht mit YaST2 ^^, und bin auch sonst ein Linux-Neuling).
Jetzt mein Vorhaben:
Ich will mich über PuTTY mit einem RSA-Key einloggen : funktioniert.
Einen FTP-Tunnel aufbauen, sieht bei mir genauso aus wie http://www.ftpgetter.com/ftp-ssh-tunnel.php .
Resultat: Wenn ich versuche, mit meinem FTP-Clienten zum localhost auf Port (auf der eben genannten Seite ist es Port 3131) 21 zu verbinden, kann ich mich einloggen (habe es vsftpd erlaubt, sich mit lokalen Usern einzuloggen), jedoch kommt anschließend diese Fehlermeldung, sobald er Versucht die Dateilist zu bekommen:
(Ich benutze FileZilla)
Befehl: LIST
Antwort: 150 Here comes the directory listing.
Antwort: 426 Failure writing network stream.
Fehler: Dateiliste konnte nicht empfangen werden
Wenn ich direkt auf den Server gehe ohne Tunnel funktioniert es.
Meine Fragen:
Muss in der sshd_config PermitTunnel auf yes stehen? soviel ich in der man sshd_config gelesen habe nicht.
Muss nur der Port 21 weitergeleitet werden oder auch Port 20? Hab zwar in vsftpd.conf connect_from_port_20=NO stehen, aber who knows. Habs mit (also auf yes und beide getunnelt) und ohne (auf no und nur Port 21 getunnelt) probiert: es geht nicht. Stelle die ganzen Configs rein, wenn es von Bedeutung ist . Und: Passiver Modus oder Aktiver Modus ist egal, Dateiliste kann nicht geladen werden, der Fehler wie er oben steht kommt beim aktiv Modus, ansonsten ist er anders formuliert .
Und wo ich schon einen Thread erstelle: Wie kann ich vsftpd sagen, dass es nur getunnelte Verbindungen annehmen soll? Also würde es in dem Fall reichen, wenn nur die Verbindungen von localhost, also die vom Server selbst kommen (oder nicht??), angenommen werden.
Bin für Antworten dankebar
/edit: ich hab mir nochmal den Fehler im passiven Modus durchgelesen: Der Transferkanal kann nicht geöffnet werden. Kann man in einer ssh-Verbindung nicht zwei Ports tunneln (hab versucht zwei Ports zu tunneln, schlug mit der selben Fehlermeldung fehl)?
Ich habe seit kurzem auf meinem Server Debian 4.0 installiert. Lief soweit ganz gut (bin von openSuSE auf Debian umgestiegen um mich ein wenig mehr mit Linux zu beschäftigen, nicht mit YaST2 ^^, und bin auch sonst ein Linux-Neuling).
Jetzt mein Vorhaben:
Ich will mich über PuTTY mit einem RSA-Key einloggen : funktioniert.
Einen FTP-Tunnel aufbauen, sieht bei mir genauso aus wie http://www.ftpgetter.com/ftp-ssh-tunnel.php .
Resultat: Wenn ich versuche, mit meinem FTP-Clienten zum localhost auf Port (auf der eben genannten Seite ist es Port 3131) 21 zu verbinden, kann ich mich einloggen (habe es vsftpd erlaubt, sich mit lokalen Usern einzuloggen), jedoch kommt anschließend diese Fehlermeldung, sobald er Versucht die Dateilist zu bekommen:
(Ich benutze FileZilla)
Befehl: LIST
Antwort: 150 Here comes the directory listing.
Antwort: 426 Failure writing network stream.
Fehler: Dateiliste konnte nicht empfangen werden
Wenn ich direkt auf den Server gehe ohne Tunnel funktioniert es.
Meine Fragen:
Muss in der sshd_config PermitTunnel auf yes stehen? soviel ich in der man sshd_config gelesen habe nicht.
Muss nur der Port 21 weitergeleitet werden oder auch Port 20? Hab zwar in vsftpd.conf connect_from_port_20=NO stehen, aber who knows. Habs mit (also auf yes und beide getunnelt) und ohne (auf no und nur Port 21 getunnelt) probiert: es geht nicht. Stelle die ganzen Configs rein, wenn es von Bedeutung ist . Und: Passiver Modus oder Aktiver Modus ist egal, Dateiliste kann nicht geladen werden, der Fehler wie er oben steht kommt beim aktiv Modus, ansonsten ist er anders formuliert .
Und wo ich schon einen Thread erstelle: Wie kann ich vsftpd sagen, dass es nur getunnelte Verbindungen annehmen soll? Also würde es in dem Fall reichen, wenn nur die Verbindungen von localhost, also die vom Server selbst kommen (oder nicht??), angenommen werden.
Bin für Antworten dankebar
/edit: ich hab mir nochmal den Fehler im passiven Modus durchgelesen: Der Transferkanal kann nicht geöffnet werden. Kann man in einer ssh-Verbindung nicht zwei Ports tunneln (hab versucht zwei Ports zu tunneln, schlug mit der selben Fehlermeldung fehl)?
Ich weiss nicht ob das so ne gute Idee ist FTP über ssh zu tunneln, da das Protokoll etwas unhandlich ist.
Es gibt einen aktiven und einen passiven Modus; Kontroll- und Datenverbindungen und im Allgemeinen sind für die Datenverbindungen je nach Konfiguration zufällige ports bzw. ganze Portranges zu berücksichtigen.
Ausserdem stehen in den PORT Befehlen des Protokolls auch noch die IP Adressen drinnen die zu kontaktieren sind....
Die Details stehen im RFC
Wieso nicht einfach "scp" oder FTP mit TLS/SHH?
Es gibt einen aktiven und einen passiven Modus; Kontroll- und Datenverbindungen und im Allgemeinen sind für die Datenverbindungen je nach Konfiguration zufällige ports bzw. ganze Portranges zu berücksichtigen.
Ausserdem stehen in den PORT Befehlen des Protokolls auch noch die IP Adressen drinnen die zu kontaktieren sind....
Die Details stehen im RFC
Wieso nicht einfach "scp" oder FTP mit TLS/SHH?
Also wenn Du FTP auf dem SSH-Server und nicht von einem weiter entfernten Rechner nutzen willst so könntest Du Dir die "FTP to SFTP-Bridge" unterhalb von Plugins von Mindterm anschauen. Mindterm ist ein SSH-Client ähnlich wie Putty nur viel besser ...
Hier als Applet: http://weavervsworld.com/ssh/ssh.php
Wenn Du über den SSH-Server weiter zu einem anderen FTP-Server willst könntest Du vielleicht mit http://curlftpfs.sourceforge.net/ den FTP-Bereich lokal auf dem SSH-Server mounten und dann per SCP bzw. "FTP to SFTP-Bridge" zugreifen. Nicht selbst probiert, da FTP unsicher ist.
Hier als Applet: http://weavervsworld.com/ssh/ssh.php
Wenn Du über den SSH-Server weiter zu einem anderen FTP-Server willst könntest Du vielleicht mit http://curlftpfs.sourceforge.net/ den FTP-Bereich lokal auf dem SSH-Server mounten und dann per SCP bzw. "FTP to SFTP-Bridge" zugreifen. Nicht selbst probiert, da FTP unsicher ist.
Der FTP-Server ist auf dem selben PC wie der SSH-Server.
Mein Ziel ist es eine sichere FTP-Verbindung aufzubauen, bei der das Passwort nicht im Klartext übertragen wird. Ob jetzt mit einem SSH-Tunnel oder mit TLS, wie ich es jetzt gemacht habe, ist mir egal .
Einen Java-SSH Clienten mag ich irgendwie nicht so gerne benutzen , weil mir Java sowieso langsam vorkommt (Ich weiß, es ist mehr oder weniger ein Vorurteil). Außerdem sollen noch ein paar andere User Zugriff haben, und ich will ihnen nicht Mindterm aufzwingen .
Meine Jetzige Lösung:
Kein Tunnel, Data Port 20 wird benutzt und TLS ist aktiviert und für alle User Pflicht. Meine Frage: Ist das sicher ^^? Ich hab selber ein Zertifikat und Schlüssel (?) erstellt (wie in http://www.brennan.id.au/14-FTP_Server.html beschrieben), es funktioniert aucht, nur kenn ich mit mich SSL/TLS absolut nicht aus (hab mir grad einiges durchgelesen, werde mir aber noch ein paar Seiten anschauen .
Mein Ziel ist es eine sichere FTP-Verbindung aufzubauen, bei der das Passwort nicht im Klartext übertragen wird. Ob jetzt mit einem SSH-Tunnel oder mit TLS, wie ich es jetzt gemacht habe, ist mir egal .
Einen Java-SSH Clienten mag ich irgendwie nicht so gerne benutzen , weil mir Java sowieso langsam vorkommt (Ich weiß, es ist mehr oder weniger ein Vorurteil). Außerdem sollen noch ein paar andere User Zugriff haben, und ich will ihnen nicht Mindterm aufzwingen .
Meine Jetzige Lösung:
Kein Tunnel, Data Port 20 wird benutzt und TLS ist aktiviert und für alle User Pflicht. Meine Frage: Ist das sicher ^^? Ich hab selber ein Zertifikat und Schlüssel (?) erstellt (wie in http://www.brennan.id.au/14-FTP_Server.html beschrieben), es funktioniert aucht, nur kenn ich mit mich SSL/TLS absolut nicht aus (hab mir grad einiges durchgelesen, werde mir aber noch ein paar Seiten anschauen .
SFTP habe ich probiert, und würde es benutzen / konfigurieren, wenn folgendes möglich ist:
Der User soll auf jeden Fall in seinem Home-Verz. eingesperrt sein.
Ich habe mich dazu entschlossen, weil er in den anderen Verz. nix zu suchen hat (egal ob in SSH oder in SFTP), bzw. nichts interessantes dort auf ihn wartet, und die Verz., die ihn interessieren, werden sowieso mit mount --bind in seinem Home-Verz. (mit entsprechenden Rechten) eingebunden.
Ich hab mich grad mit scponly beschäftigt, aber das scheint mir dafür zu sein, dass man halt nur scp/sftp benutzen kann und kein ssh mehr benutzen kann.
Dazu mache ich einen neuen Thread auf (wenn ich es nicht alleine schaffe zu konfigurieren), hat nämlich nichts mehr mit SSH-Tunnel zu tun .
-> Ich erkundige mich weiter, bin für die Hilfe die mir schon bis jetzt geboten wird dankbar .
-> closed <-
Der User soll auf jeden Fall in seinem Home-Verz. eingesperrt sein.
Ich habe mich dazu entschlossen, weil er in den anderen Verz. nix zu suchen hat (egal ob in SSH oder in SFTP), bzw. nichts interessantes dort auf ihn wartet, und die Verz., die ihn interessieren, werden sowieso mit mount --bind in seinem Home-Verz. (mit entsprechenden Rechten) eingebunden.
Ich hab mich grad mit scponly beschäftigt, aber das scheint mir dafür zu sein, dass man halt nur scp/sftp benutzen kann und kein ssh mehr benutzen kann.
Dazu mache ich einen neuen Thread auf (wenn ich es nicht alleine schaffe zu konfigurieren), hat nämlich nichts mehr mit SSH-Tunnel zu tun .
-> Ich erkundige mich weiter, bin für die Hilfe die mir schon bis jetzt geboten wird dankbar .
-> closed <-
Ich hab mir jetzt diverse Seiten angeschaut (unter anderem http://www.fuschlberger.net/programs/ss ... root-jail/, womit man einen user anlegt, der in einer minimalen Umgebung gefangen ist, mit sftp wie mit ssh, aber man kommt aus dieser Umgebung nicht raus, auch nicht mit su, fehler :su must be run from a terminal), und hab im Prinzip noch keine konkrete Vorstellung, wie ich vorgehen soll, weils anscheinend sehr viele Möglichkeiten gibt. Bin für Tipps dankbar .
SSH-Einschränkungen? Die aktuelle Konfiguration ist folgendermaßen:
Authentication läuft über public/private-key, nichts sonst. Joar... ansonsten kann der User in der Shell im Moment alles machen was er sonst auch machen kann. Also keine sonstigen Einschränkungen im Moment.
An dieser Konfiguration (also alles was in /etc/ssh/sshd_config steht) kann doch alles so bleiben oder?
Nochmal das Ziel :
SSH-Login soll weiterhin möglich sein, besser wäre es wenn er in seinem home directory gefangen wäre, und nur dort, aber das ist anscheinend nicht möglich. SFTP soll der Übersichthalber den User (Windows-User) in seinem Homedirectory gefangen halten ^^. Wenn man den Benutzer wechselt auf root, soll alles erreichbar sein.
SSH-Einschränkungen? Die aktuelle Konfiguration ist folgendermaßen:
Authentication läuft über public/private-key, nichts sonst. Joar... ansonsten kann der User in der Shell im Moment alles machen was er sonst auch machen kann. Also keine sonstigen Einschränkungen im Moment.
An dieser Konfiguration (also alles was in /etc/ssh/sshd_config steht) kann doch alles so bleiben oder?
Nochmal das Ziel :
SSH-Login soll weiterhin möglich sein, besser wäre es wenn er in seinem home directory gefangen wäre, und nur dort, aber das ist anscheinend nicht möglich. SFTP soll der Übersichthalber den User (Windows-User) in seinem Homedirectory gefangen halten ^^. Wenn man den Benutzer wechselt auf root, soll alles erreichbar sein.
Naja, solange der Benutzer per SSH (fast) alles sehen kann, kann er auch per SCP (fast) alles kopieren würde ich sagen. Mit den Restricted-Shell-Lösungen bin ich auch nicht sehr weit gekommen. Zwar wurde oft z.B. ein "cd .." unterbunden, ein direktes anschauen von Dateien in der Form "more /etc/passwd" war jedoch immer ohne Probleme möglich. Ich werde mir deinen Link mal anschauen, vielleicht fällt mir ja noch was ein. Wollte auch genau so einen Benutzer haben wie Du ihn Dir wünscht.
Nachtrag: Hast Du denn den Befehl /bin/su entsprechend so im Script eingebaut, dass auch er in den Jail kopiert wird?
Nachtrag: Hast Du denn den Befehl /bin/su entsprechend so im Script eingebaut, dass auch er in den Jail kopiert wird?