Computerul A (presupus că ip este 44.44.44.44) poate ftp gazdă 130.89.148.12.
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.
Computerul B (computerul meu local) nu poate ftp gazdă 130.89.148.12. Să construim un tunel ssh cu comanda ssh în acest fel:
ssh -L -f -N localhost:2121:130.89.148.12:21 [email protected]
Tunelul ssh dintre computerul meu local și computerul A (44.44.44.44) a fost conectat după parola pentru a vă conecta la 44.44.44.44.
Apoi pentru a introduce comanda pe consola locală a computerului meu:
ftp localhost:2121 ftp: localhost:2121: Name or service not known
Care este problema tunelului meu ssh?
Gândiți-vă la chexum, comanda ftp potrivită este ftp localhost 2121 Dar o nouă problemă.
Comentarii
Răspuns
Abordarea dvs. nu ține cont de acest lucru spre deosebire de alte protocoale uzuale, FTP folosește ambele portul 20 și portul 21 peste TCP implicit .
Termenul pasiv se referă la faptul că protocolul este ușor mai bine comportat decât implementările inițiale.
Iată un link:
http://www.slacksite.com/other/ftp.html
Portul 20 / TCP este utilizat pentru date, iar portul 21 / TCP pentru comenzi .
În Unix, de asemenea, porturile privilegiate < 1024, pot fi legate doar de rădăcină.
Deci, fie că faceți:
sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 [email protected]
În acest fel nu oferiți niciun port suplimentar și îl utilizați numai cu
ftp -p localhost
sau dacă nu aveți rădăcină:
ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 [email protected]
și apoi utilizați:
ftp -p -P 2121 localhost
De la man ftp http://linux.die.net/man/1/ftp
-p mod pasiv
-P port
sau dacă are o versiune ftp
care nu acceptă -P
(Debian 9 / Ubuntu 16.04):
ftp -p localhost 2121
De asemenea, voi lăsa un link către „tunele SSH redirecționare port locală și la distanță explicată”
În sfârșit, aș sfătui să nu folosiți root în sistemul de la distanță pentru conexiunile ssh. root este un cont foarte puternic și trebuie rezervat doar pentru administrarea sistemului.
Mai mult, în multe Linux-uri moderne ssh conectarea la distanță, deoarece root-ul este dezactivat în mod implicit.
De ce este atât de rău autentificarea root prin SSH că toată lumea sfătuiește să o dezactiveze?
Comentarii
- Ce? Conexiunea de date nu utilizează portul 20; folosește un port aleator > 1024. De asemenea,
ftp
nu pare să aibă o opțiune-P
, cel puțin nu pe Ubuntu 16.04. Astfel, nu puteți redirecționa ftp cu ssh deoarece nu ' nu știți ce port aleator va fi ales atunci când este stabilită conexiunea de date (și veți obține unul diferit pentru fiecare fișier transferat sau fiecarels
). - Nu, serverul ascultă și pe un port efemer. Trebuie, deoarece poate servi mai mulți clienți și, dacă ar folosi portul 20 pentru fiecare dintre ei, n-ar avea nicio idee care să corespundă cu ce sesiune de control.
- Am imprimat FTP RFC pe punctul meu imprimantă matricială și am studiat-o când aveam 16 ani. Mi-am dat seama că puteți emite o comandă PASV către un server, apoi o comandă PORT către celălalt server cu adresa IP și numărul portului din răspunsul PASV de pe celălalt server și le puteți obține să trimit fișierul direct de la un server la altul în loc să trebuiască să-l descarc și să-l încărc eu însumi prin modemul meu de 28,8 kbps. Mai târziu a ieșit un program numit FXP care ar putea face asta și am scris și propriul meu software de server FTP pentru WinNT care a suflat pantalonii de la orice altceva. Uită-te singur la un răspuns PASV.
- Ești confuz. Ascultă în portul 21, nu 20. Vă conectați la serverul din portul 21, apoi fie emiteți o comandă PORT, spunându-i serverului la ce IP și numărul de port ar trebui să se conecteze, fie o comandă PASV, caz în care începe să asculte conexiunea de date pe un port efemer și specifică ce port este în răspuns. De la o comandă citat pasv la ftp.gnu.org: " 227 Introducerea modului pasiv (208,118,235,20,96,222) ". Rețineți că serverul ascultă pe portul 96.222 sau 24.798.
- De ce nu îl editați astfel încât să fie corect?
ftp(1)
despre cum să specificați un port. ' este, de obicei, separat de un spațiu (nu de două puncte) sau ca opțiune-p
. Tu ' Va trebui, de asemenea, să vă asigurați că utilizați ftp pasiv, deci verificați mai întâi manualul.