Il computer A (supponendo che ip sia 44.44.44.44) può eseguire lftp sullhost 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. 

Il computer B (il mio pc locale) non può eseguire lftp sullhost 130.89.148.12. Creiamo un tunnel ssh con il comando ssh in questo modo:

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

Il tunnel ssh tra il mio PC locale e il computer A (44.44.44.44) è stato connesso dopo password per accedere a 44.44.44.44.
Quindi inserire il comando sulla console del mio PC locale:

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

Qual è il problema con il mio tunnel ssh?

Pensa a chexum, il comando ftp corretto è ftp localhost 2121 Ma un nuovo problema. inserisci qui la descrizione dellimmagine

Commenti

  • Controlla la tua manpage ftp(1) su come specificare una porta. ' è solitamente separato da uno spazio (non da due punti) o come opzione -p. ' Dovrò anche assicurarti di usare ftp passivo, quindi controlla prima il manuale.
  • Per favore, non inserire testo come immagini.

Risposta

Il tuo approccio non ne tiene conto contrariamente ad altri protocolli comuni, FTP utilizza sia la porta 20 e la porta 21 su TCP per impostazione predefinita .

Il termine passivo si riferisce al fatto che il protocollo si comporta leggermente meglio delle implementazioni iniziali.

Ecco un collegamento:

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

La porta 20 / TCP viene utilizzata per i dati e la porta 21 / TCP per i comandi .

In Unix, anche le porte privilegiate < 1024, possono essere vincolate solo da root.

Quindi o lo fai:

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

In questo modo non si fornisce alcuna porta aggiuntiva e la si utilizza solo con

ftp -p localhost 

o se non si dispone di root:

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

e quindi utilizza:

ftp -p -P 2121 localhost 

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

-p modalità passiva
-P porta

o se con una versione di ftp che non supporta -P (Debian 9 / Ubuntu 16.04):

ftp -p localhost 2121 

Lascerò anche un collegamento a “Spiegazione del port forwarding locale e remoto dei tunnel SSH”

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

Infine, consiglierei di non usare root nel sistema remoto per le connessioni ssh. root è un account molto potente e dovrebbe essere riservato solo allamministrazione del sistema.

Inoltre, in molti Linux moderni laccesso remoto ssh come root è disabilitato per impostazione predefinita.

Perché il login di root tramite SSH è così male che tutti consigliano di disabilitarlo?

Commenti

  • Cosa? La connessione dati non utilizza la porta 20; utilizza una porta casuale > 1024. Inoltre ftp non sembra avere unopzione -P, almeno non su Ubuntu 16.04. Quindi non puoi inoltrare ftp con ssh dato che ' non sai quale porta casuale verrà scelta quando viene stabilita la connessione dati (e ne ottieni una diversa per ogni file trasferito o ogni volta che ls).
  • No, anche il server è in ascolto su una porta temporanea. Deve perché può servire più client e se usasse la porta 20 per ciascuno di essi, non avrebbe idea di quale corrispondesse a quale sessione di controllo.
  • Ho stampato lFTP RFC sul mio punto stampante a matrice e lho studiato quando avevo 16 anni. Ho capito che è possibile inviare un comando PASV a un server, quindi un comando PORT allaltro server con lindirizzo IP e il numero di porta dalla risposta PASV dallaltro server e ottenerli per inviare il file direttamente da un server allaltro invece di doverlo scaricare e caricare io stesso tramite il mio modem a 28.8kbps. Successivamente è uscito un programma chiamato FXP che poteva farlo, e ho anche scritto il mio software per server FTP per WinNT che ha fatto saltare in aria qualsiasi altra cosa. Guarda tu stesso una risposta PASV.
  • Sei confuso. È in ascolto sulla porta 21, non 20. Ti connetti al server sulla porta 21, quindi emetti un comando PORT, dicendo al server a quale IP e numero di porta deve connettersi, o un comando PASV, nel qual caso inizia ad ascoltare la connessione dati su una porta temporanea e specifica quale porta si trova nella risposta. Da un comando quote pasv a ftp.gnu.org: " 227 Accesso alla modalità passiva (208,118,235,20,96,222) ". Nota che il server è in ascolto sulla porta 96,222 o 24,798.
  • Perché non modificarlo in modo che sia corretto?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *