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.
Commenti
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”
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 chels
). - 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?
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.