Computer A (antages at ip er 44.44.44.44) kan ftp hosten 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.
Computer B (min lokale pc) kan ikke ftp værten 130.89.148.12. Lad os bygge en ssh-tunnel med ssh-kommando på denne måde:
ssh -L -f -N localhost:2121:130.89.148.12:21 [email protected]
ssh-tunnelen mellem min lokale pc og computer A (44.44.44.44) blev tilsluttet efter kodeord for at logge ind på 44.44.44.44.
Derefter for at indtaste kommandoen på min lokale pc-konsol:
ftp localhost:2121 ftp: localhost:2121: Name or service not known
Hvad er der i vejen med min ssh-tunnel?
Tænk på chexum, den rigtige ftp-kommando er ftp localhost 2121 Men nyt problem.
Kommentarer
Svar
Din tilgang tager ikke højde for det i modsætning til andre almindelige protokoller bruger FTP både port 20 og port 21 over TCP som standard .
Udtrykket passiv henviser til, at protokollen lidt fungerer bedre end de oprindelige implementeringer.
Her er et link:
http://www.slacksite.com/other/ftp.html
Port 20 / TCP bruges til data, og port 21 / TCP til kommandoer .
I Unix kan også privilegerede porte < 1024 kun være bundet af root.
Så gør du enten:
sudo ssh -f -N -L 20:130.89.148.12:20 -L 21:130.89.148.12:21 [email protected]
På denne måde giver du ingen ekstra port, og bruger den kun med
ftp -p localhost
eller hvis du ikke har root:
ssh -f -N -L 2120:130.89.148.12:20 -L 2121:130.89.148.12:21 [email protected]
og derefter bruge:
ftp -p -P 2121 localhost
Fra mand ftp http://linux.die.net/man/1/ftp
-p passiv tilstand
-P-port
eller hvis med en version af ftp
, der ikke understøtter -P
(Debian 9 / Ubuntu 16.04):
ftp -p localhost 2121
Jeg vil også efterlade et link til “SSH-tunneler lokal og ekstern portvideresendelse forklaret”
Endelig vil jeg råde dig til ikke at bruge root i fjernsystemet til ssh-forbindelser. root er en meget kraftig konto og bør kun reserveres til systemadministration.
Desuden deaktiveres ssh eksternt login som root i mange moderne Linux som standard.
Hvorfor er root login via SSH så slemt at alle råder til at deaktivere det?
Kommentarer
- Hvad? Dataforbindelsen bruger ikke port 20; den bruger en tilfældig port > 1024. Også
ftp
ser ikke ud til at have en-P
mulighed, i det mindste ikke på Ubuntu 16.04. Således kan du ikke videresende ftp med ssh, da du ikke ' ikke ved, hvilken tilfældig port der vælges, når dataforbindelsen oprettes (og du får en anden for hver fil, der overføres eller hver gang duls
). - Nej, serveren lytter også til en kortvarig port. Da det kan betjene flere klienter, og hvis det brugte port 20 for hver af dem, ville det ikke have nogen idé om, hvilken der svarede til hvilken kontrolsession.
- Jeg udskrev FTP RFC på min prik matrixprinter og studerede det, da jeg var 16. Jeg regnede med, at du kan udstede en PASV-kommando til en server, derefter en PORT-kommando til den anden server med IP-adressen og portnummeret fra PASV-svaret fra den anden server og få dem at sende filen direkte fra en server til den anden i stedet for at skulle downloade og uploade den selv via mit 28,8 kbps modem. Senere kom et program kaldet FXP ud, der kunne gøre det, og jeg skrev også min egen FTP-serversoftware til WinNT, der sprang bukserne af alt andet. Gå og se på et PASV-svar selv.
- Du er forvirret. Det lytter på port 21, ikke 20. Du opretter forbindelse til serveren på port 21 og udsteder derefter enten en PORT-kommando, der fortæller serveren, hvilket IP og portnummer den skal oprette forbindelse til, eller en PASV-kommando, i hvilket tilfælde den begynder at lytte efter dataforbindelsen på en kortvarig port og specificerer, hvilken port der er i svaret. Fra et citat pasv-kommando til ftp.gnu.org: " 227 Aktivering af passiv tilstand (208,118,235,20,96,222) ". Bemærk, at serveren lytter på port 96,222 eller 24,798.
- Hvorfor ikke redigere den, så den er korrekt?
ftp(1)
manpage om, hvordan du angiver en port. Det ' er normalt adskilt af et mellemrum (ikke et kolon) eller som en-p
-mulighed. Du ' Jeg skal også sørge for at bruge passiv ftp, så tjek manualen først.