Computer A (angenommen, dass ip 44.44.44.44 ist) kann den Host 130.89.148.12 ftp.

ftp 130.89.148.12 Connected to 130.89.148.12. 220 ftp.debian.org FTP server Name (130.89.148.12:debian8): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. 

Computer B (mein lokaler PC) kann den Host 130.89.148.12 nicht ftp. Erstellen wir einen SSH-Tunnel mit dem Befehl ssh folgendermaßen:

ssh -L -f -N localhost:2121:130.89.148.12:21 [email protected] 

Der SSH-Tunnel zwischen meinem lokalen PC und Computer A (44.44.44.44) wurde nachher verbunden Passwort zum Anmelden bei 44.44.44.44.
Geben Sie dann den Befehl auf meiner lokalen PC-Konsole ein:

ftp localhost:2121 ftp: localhost:2121: Name or service not known 

Was ist mit meinem SSH-Tunnel los?

Denken Sie an chexum, der richtige ftp-Befehl ist ftp localhost 2121 Aber neues Problem. Geben Sie hier die Bildbeschreibung ein

Kommentare

  • Überprüfen Sie in Ihrer ftp(1) Manpage, wie Sie einen Port angeben. Es ist ' normalerweise durch ein Leerzeichen (kein Doppelpunkt) oder als -p Option getrennt. Sie ' Sie müssen auch sicherstellen, dass Sie passives FTP verwenden. Lesen Sie daher zuerst das Handbuch.
  • Bitte platzieren Sie keinen Text als Bilder.

Antwort

Ihr Ansatz berücksichtigt dies nicht Im Gegensatz zu anderen gängigen Protokollen verwendet FTP standardmäßig sowohl Port 20 als auch Port 21 über TCP .

Der Begriff passiv bezieht sich darauf, dass sich das Protokoll etwas besser verhält als die ersten Implementierungen.

Hier ist ein Link:

http://www.slacksite.com/other/ftp.html

Port 20 / TCP wird für Daten und Port 21 / TCP für Befehle verwendet .

Unter Unix können auch privilegierte Ports < 1024 nur durch root gebunden werden.

Entweder Sie tun Folgendes:

sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 [email protected] 

Auf diese Weise geben Sie keinen zusätzlichen Port an und verwenden ihn nur mit

ftp -p localhost 

oder Wenn Sie kein Root haben:

ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 [email protected] 

und verwenden Sie dann:

ftp -p -P 2121 localhost 

From man ftp http://linux.die.net/man/1/ftp

-p passiver Modus
-P Port

oder wenn mit einer Version von ftp, die -P nicht unterstützt (Debian 9 / Ubuntu 16.04):

ftp -p localhost 2121 

Ich werde auch einen Link zu „SSH-Tunnel für lokale und Remote-Port-Weiterleitung erklärt“ hinterlassen.

http://blog.trackets.com/2014/05/17/ssh-tunnel-local-and-remote-port-forwarding-explained-with-examples.html

Zuletzt würde ich raten, root im Remote-System nicht für SSH-Verbindungen zu verwenden. root ist ein sehr leistungsfähiges Konto und sollte nur für die Systemadministration reserviert werden.

Außerdem ist in vielen modernen Linux-Versionen die ssh-Remote-Anmeldung als Root standardmäßig deaktiviert.

Warum ist die Root-Anmeldung über SSH so schlecht? dass jeder rät, es zu deaktivieren?

Kommentare

  • Was? Die Datenverbindung verwendet nicht Port 20; Es wird ein zufälliger Port > 1024 verwendet. Auch ftp scheint keine -P -Option zu haben, zumindest nicht unter Ubuntu 16.04. Daher können Sie FTP nicht mit ssh weiterleiten, da Sie ' nicht wissen, welcher zufällige Port ausgewählt wird, wenn die Datenverbindung hergestellt wird (und Sie für jede übertragene oder jede Datei einen anderen erhalten Wenn Sie ls).
  • Nein, der Server überwacht auch einen kurzlebigen Port. Es muss, da es mehrere Clients bedienen kann, und wenn es Port 20 für jeden von ihnen verwendet, hätte es keine Ahnung, welcher welcher Kontrollsitzung entspricht.
  • Ich habe den FTP-RFC auf meinem Punkt ausgedruckt Matrixdrucker und studierte es, als ich 16 war. Ich fand heraus, dass Sie einen PASV-Befehl an einen Server und dann einen PORT-Befehl an den anderen Server mit der IP-Adresse und der Portnummer aus der PASV-Antwort vom anderen Server ausgeben und diese abrufen können um die Datei direkt von einem Server auf den anderen zu senden, anstatt sie selbst über mein 28,8-kbit / s-Modem herunterladen und hochladen zu müssen. Später kam ein Programm namens FXP heraus, das das konnte, und ich schrieb auch meine eigene FTP-Server-Software für WinNT, die alles andere in die Luft jagte. Schauen Sie sich selbst eine PASV-Antwort an.
  • Sie sind verwirrt. Es überwacht Port 21 und nicht 20. Sie stellen über Port 21 eine Verbindung zum Server her und geben dann entweder einen PORT-Befehl aus, der dem Server mitteilt, mit welcher IP-Adresse und Portnummer er eine Verbindung herstellen soll, oder einen PASV-Befehl. In diesem Fall beginnt er zu lauschen die Datenverbindung an einem kurzlebigen Port und gibt an, welcher Port in der Antwort enthalten ist. Von einem Zitat-Pasv-Befehl zu ftp.gnu.org: " 227 Aktivieren des passiven Modus (208,118,235,20,96,222) ". Beachten Sie, dass der Server Port 96.222 oder 24.798 überwacht.
  • Warum bearbeiten Sie ihn nicht so, dass er korrekt ist?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.