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ă. introduceți descrierea imaginii aici

Comentarii

  • Verificați pagina de manual 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.
  • Vă rugăm să nu plasați text ca imagini.

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ă”

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

Î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 fiecare ls).
  • 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?

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *