FTP anonymous
- servers
Vraag aan de docent het ip-adres van een anonymous FTP server, of gberuik EEn van de onderstaande machines:
ftp.heanet.ie // ftp.vub.ac.be // ftp5.gwdg.de // ftp.fau.de // ftp.sunet.se // ftp.funet.fi // ftp.belnet.be // ftp.astro.ulg.ac.be (2018)
-- spreek met mekaar af wie welke server gebruikt. De meeste servers hebben een limiet van 2 users per public ip-connection.
Gebruik deUBU16-NET-xyz
om FTP op te testen. Deze machine heeft zowel anonymous login als user login (zie verder 'FTP met login').
Gebruik de linux CLI (in een virtuele machine) om deze en volgende oefening tot een goede einde te brengen ... ftp clients werken niet goed vanuit de windows CLI ....
- inleiding
FTP is een protocol: File Transfer Protocol. Het bestaat al sedert 1971 (RFC114) en in zijn huidige vorm sedert 1985 (RFC959). File transfert is één van de belangrijkste activiteiten op netwerken. De basisnoodzaak is in de voorbije halve eeuw nooit veranderd: "We willen file A op computer 1 ook op computer 2, en kan dat asjeblief via het netwerk"
Er bestaan heel veel grafische ftp clients.Firefox
,Konqueror
,FileZilla
,gFTP
,WS-ftp
, ... om er maar een paar te noemen. In het verleden werd FTP al vervangen door HTTP voor eenvoudige downloads. En hoewel FTP langzaam vervangen wordt door SFTP voor uploads, is het nog steeds een belangrijk protocol in de wereld van de web-developpers en systeembeheerders.
Er bestaan eveneens ftp clients voor de shell:Midnight Commander
,TNftp
,lftp
enwget
om er een paar te noemen. Hier focussen we echter op de standaard ftp client zoals die in 4.2BSD unix zijn intrede deed. Deze ftp client komt standaard voor bij alle linux, bsd en unix versies, Mac en Windows.
We gebruiken ftp versie 0.17-19build1 in onze voorbeelden
Meer weten: en.wikipedia.org/wiki/Ftp
- anonymous FTP
Veruit het meesteftp
verkeer om bestanden te downloaden van een publieke server gebeurt als anonymous user. Een dergelijke publieke server isftp.belnet.be
. Je kan hem bereiken viahttp
,rsync
enftp
. Opftp.belnet.be
kan je echter maar met 2 of 3 tegelijk; in klas-verband werk je beter met de ftp-server van de leraar:lap2012
ftp
starten en inloggen
Vervang in de volgende voorbeelden ftp.belnet.be door een bereikbare machine, spreek met mekaar af ... https://ftpclientserversites.com/anonymous-ftp-sites-in-domain-be/
Tik hetvolgende in:
$
ftp ftp.belnet.be
Connected to hydra.belnet.be. 220-Welcome to the BELNET public FTP cluster server ftp.belnet.be This archive is provided through a cluster of 12 double dual cores Intel Xeon 3 GHz processors machines, each having 4 GB of RAM. The 16 TB FTP archives is taken from an iSCSI SATA SAN. This cluster is located in Brussels, Belgium and operated by BELNET, the belgian Education and Research Network. If you have any problem, question or mirror request, please send them to ftpmaint@belnet.be This archive is also available through the following means: RSYNC rsync.belnet.be (IPv4) HTTP http://ftp.belnet.be (IPv4 + IPv6) FTP ftp://ftp.belnet.be (IPv4 + IPv6) Note: opening too many parallel connections to this host is considered an abuse. Currently used storage capacity : 15T 220 ProFTPD 1.3.2 Server (BELNET FTPD Server) [193.190.67.15] Name (ftp.belnet.be): anonymous 331 Anonymous login ok, send your complete email address as your password Password: whateveryouwant 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.
De server wacht nu op een reactie van ons met de
ftp>
prompt.
We tikken geen url in zoals bijfirefox
of bijwget
maar gewoon het commandoftp
gevolgd door de hostname of zijn ip-adres.
Bij inloggen geeft de server een heleboel informatie over zichzelf, en over wat er mag gebeuren door wie.
Daarna vraagt hij om een usernaam. In ons geval loggen we in als anonymous.
Welk paswoord dat we daarna intikken heeft bijftp.belnet.be
geen enkel belang. Bij sommige ftp-servers wordt een email-adres gevraagd als paswoord, maar om spam te vermijden tik je dan beter iets onbestaands in als napoleon@france.fr
Om ftp te verlaten tikken wequit
.
Een ftp server is altijd beleefd en geeft een leesbaar antwoordt na elke<ENTER>
van jouw kant. Het protocol geeft ook nog een drie cijferige code mee: de completion reply. Jouw client stuurt primtives naar de server.
Meer over deze replies vind je hier: en.wikipedia.org/wiki/List_of_FTP_server_return_codes
Meer over de primitives hier: nsftools.com/tips/RawFTP.htm
Je kan nu even kijken metwireshark
hoe FTP in mekaar zit ...
- tikfouten
Soms gebeurt het dat we een tikfout maken bij de servernaam. Bekijk even het volgende voorbeeld:$ ftp ftp.belnet.be ftp: ft.belnet.be: Unknown host ftp> open ftp.belnet.be Connected to hydra.belnet.be. 220-Welcome to the BELNET public FTP cluster server ftp.belnet.be ! ... ftp> close 221 Goodbye. ftp>
Na de melding unknown host, blijft de ftp prompt wachten op je commando's. In plaats van
quit
in te tikken en van vooraf aan te herbeginnen kunnen we de verbinding openen met hetopen
commando. Indien we een sessie afsluiten metclose
, blijft de ftp prompt staan.
- .. nog meer
Welke commando's je in ftp allemaal ter beschikking hebt zie je als je het vraagteken "?" intikt aan de ftp prompt:ftp> ? Commands may be abbreviated. Commands are: ! dir mdelete qc site $ disconnect mdir sendport size account exit mget put status append form mkdir pwd struct ascii get mls quit system bell glob mode quote sunique binary hash modtime recv tenex bye help mput reget tick case idle newer rstatus trace cd image nmap rhelp type cdup ipany nlist rename user chmod ipv4 ntrans reset umask close ipv6 open restart verbose cr lcd prompt rmdir ? delete ls passive runique debug macdef proxy send
Indien je meer informatie wenst over één specifiek ftp-commando, kun je hulp opvragen als volgt:ftp> ? close close terminate ftp session ftp> ? quit quit terminate ftp session and exit ftp> ? exit exit terminate ftp session and exit ftp> ? bye bye terminate ftp session and exit
In de man pagina's staat er nog wat meer uitleg:$ man ftp FTP(1) BSD General Commands Manual FTP(1) NAME ftp — Internet file transfer program SYNOPSIS ftp [-pinegvd] [host [port]] pftp [-inegvd] [host [port]] DESCRIPTION Ftp is the user interface to the Internet standard File Transfer Protocol. The program allows a user to transfer files to and from a remote network site. Options may be specified at the command line, or to the command interpreter. ... close Terminate the FTP session with the remote server, and return to the command interpreter. Any defined macros are erased. bye Terminate the FTP session with the remote server and exit ftp. An end of file will also terminate the session and exit.
ls
/dir
/cd
Het leren werken met de ftp prompt is niet moeilijk. De commando's zijn gemaakt voor unix in de jaren zeventig. De root directory is gewoon/
en de directories zijn van mekaar gescheiden door diezelfde forward slash/
Eén van de eerste dingen die we willen doen op een onbekende server, is rondkijken wat er allemaal op zo'n server staat. Dat doen we met het commandols
. Naar een andere directory hoppen doen we metcd
. Het commandodir
doet hetzelfde alsls
. Metpwd
brengen we de huidige server-directory op scherm.ftp> open ftp.belnet.be Connected to hydra.belnet.be. 220-Welcome to the BELNET public FTP cluster server ftp.belnet.be ! 220 ProFTPD 1.3.2 Server (BELNET FTPD Server) [193.190.67.15] Name (ftp.belnet.be:jan): anonymous 331 Anonymous login ok, send your complete email address as your password Password: x-x-x-x-x 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files.
ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list lrw-r--r-- 1 ftp ftp 28 Jun 17 2009 debian -> mirror/ftp.debian.org/debian -rw-r--r-- 1 ftp ftp 0 Mar 4 2010 keepalive.txt drwxr-xr-x 96 ftp ftp 4096 May 21 18:30 mirror lrw-r--r-- 1 ftp ftp 6 Jun 17 2009 mirrors -> mirror drwxr-xr-x 2 ftp ftp 4096 May 10 08:35 packages lrw-r--r-- 1 ftp ftp 1 Jun 17 2009 pub -> . 226 Transfer complete
ftp> dir 200 PORT command successful 150 Opening ASCII mode data connection for file list lrw-r--r-- 1 ftp ftp 28 Jun 17 2009 debian -> mirror/ftp.debian.org/debian -rw-r--r-- 1 ftp ftp 0 Mar 4 2010 keepalive.txt drwxr-xr-x 96 ftp ftp 4096 May 21 18:30 mirror lrw-r--r-- 1 ftp ftp 6 Jun 17 2009 mirrors -> mirror drwxr-xr-x 2 ftp ftp 4096 May 10 08:35 packages lrw-r--r-- 1 ftp ftp 1 Jun 17 2009 pub -> . 226 Transfer complete
ftp> cd mirror 250 CWD command successful
ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list drwxr-xr-x 2 ftp ftp 4096 Jun 17 2009 BELNET-honeypot drwxr-xr-x 8 ftp ftp 4096 Sep 15 10:00 FOSDEM -rw-r--r-- 1 ftp ftp 853 Sep 15 20:00 HEADER.html drwxr-xr-x 2 ftp ftp 4096 Jun 17 2009 Mandrakelinux drwxr-xr-x 5 ftp ftp 4096 Sep 15 01:00 PortablePython drwxr-xr-x 5 ftp ftp 4096 May 16 2006 apt.bxlug.be drwxr-xr-x 11 ftp ftp 507904 Apr 4 13:27 archlinux.org drwxr-xr-x 8 ftp ftp 4096 May 1 13:43 backports.org drwxr-xr-x 2 ftp ftp 4096 Mar 4 2010 backtrack drwxr-xr-x 4 ftp ftp 4096 May 8 06:07 baron.haiku-os.org drwxr-xr-x 3 ftp ftp 4096 Jun 17 2009 blastwave.org drwxr-xr-x 3 ftp ftp 4096 Jun 17 2009 cdimage.ubuntu.com ... drwxr-xr-x 23 ftp ftp 4096 Sep 14 04:05 www.tldp.org drwxr-xr-x 4 ftp ftp 4096 Jun 23 2009 xorp.org drwxr-xr-x 4 ftp ftp 4096 Apr 7 14:33 yoper.com 226 Transfer complete
ftp> cd .. 250 CWD command successful
ftp> pwd 257 "/" is the current directory
ftp> quit 221 Goodbye
-
passive or not passive
Soms lukt de verbinding met een ftp-server wel, maar zodra we het commandols
intikken gaat er wat fout. De machine van waarop we de volgende ftp sessie draaien staat achter NAT of achter een firewall.jan@gogo1:~$ ftp ftp.belnet.be Connected to hydra.belnet.be. 220-Welcome to the BELNET public FTP cluster server ftp.belnet.be ! 220 ProFTPD 1.3.2 Server (BELNET FTPD Server) [193.190.67.15] Name (ftp.belnet.be:jan): anonymous 331 Anonymous login ok, send your complete email address as your password Password: <ENTER> 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files.
ftp> ls 200 PORT command successful
... en daarna niets meer. We wachten ongeveer een minuut en drukken dan ongeduldig
<CTRL><C>
.
^C
421 Service not available, remote server has closed connection
receive aborted
waiting for remote to finish abort
Het ftp protocol ligt zelf aan de basis van dit probleem: bij het downloaden (enls
downloadt de inhoud van een directory) neemt de server het initiatief om een sessie open te zetten naar de client, en NAT-routers vinden geen reverse port en houden deze pakketten standaard tegen.
Met het commandopassive
, draaien we de synchronisatie om: de server biedt een socket aan om op te verbinden, en de client initialiseert de verbinding:ftp> open ftp.belnet.be Connected to hydra.belnet.be. 220-Welcome to the BELNET public FTP cluster server ftp.belnet.be ! 220 ProFTPD 1.3.2 Server (BELNET FTPD Server) [193.190.67.15] Name (ftp.belnet.be:jan): anonymous 331 Anonymous login ok, send your complete email address as your password Password: <enter> 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files. ftp> passive Passive mode on. ftp> ls 227 Entering Passive Mode (193,190,67,15,201,218). 150 Opening ASCII mode data connection for file list lrw-r--r-- 1 ftp ftp 28 Jun 17 2009 debian -> mirror/ftp.debian.org/debian -rw-r--r-- 1 ftp ftp 0 Mar 4 2010 keepalive.txt drwxr-xr-x 96 ftp ftp 4096 May 21 18:30 mirror lrw-r--r-- 1 ftp ftp 6 Jun 17 2009 mirrors -> mirror drwxr-xr-x 2 ftp ftp 4096 May 10 08:35 packages lrw-r--r-- 1 ftp ftp 1 Jun 17 2009 pub -> . 226 Transfer complete ftp>
- downloaden met get en mget
anonymous ftp gebruiken we om iets te downloaden. Dat doen we met het commandoget
ftp> pwd 257 "/mirror/ftp.debian.org/debian/pool/contrib/g/googleearth-package" is the current directory ftp> ls 200 PORT command successful 150 Opening ASCII mode data connection for file list -rw-r--r-- 1 ftp ftp 835 Apr 18 2008 googleearth-package_0.5.4.dsc -rw-r--r-- 1 ftp ftp 19720 Apr 18 2008 googleearth-package_0.5.4.tar.gz -rw-r--r-- 1 ftp ftp 9428 Apr 18 2008 googleearth-package_0.5.4_all.deb -rw-r--r-- 1 ftp ftp 943 Dec 8 2009 googleearth-package_0.5.7.dsc -rw-r--r-- 1 ftp ftp 21418 Dec 8 2009 googleearth-package_0.5.7.tar.gz -rw-r--r-- 1 ftp ftp 10696 Dec 8 2009 googleearth-package_0.5.7_all.deb 226 Transfer complete ftp> get googleearth-package_0.5.7_all.deb local: googleearth-package_0.5.7_all.deb remote: googleearth-package_0.5.7_all.deb 200 PORT command successful 150 Opening BINARY mode data connection for googleearth-package_0.5.7_all.deb (10696 bytes) 226 Transfer complete 10696 bytes received in 0.24 secs (43.5 kB/s)
Dat werkt goed, maar
get
houdt niet van wildcards. Indien we meerdere files willen downloaden met gebruik van wildcards, gebruiken wemget
.ftp> get * local: 01_123.jpg remote: * 200 PORT command successful 550 *: No such file or directory ftp> mget * mget googleearth-package_0.5.4.dsc? y 200 PORT command successful 150 Opening BINARY mode data connection for googleearth-package_0.5.4.dsc (835 bytes) 226 Transfer complete 835 bytes received in 0.02 secs (36.3 kB/s) mget googleearth-package_0.5.4.tar.gz? y 200 PORT command successful 150 Opening BINARY mode data connection for googleearth-package_0.5.4.tar.gz (19720 bytes) 226 Transfer complete 19720 bytes received in 0.38 secs (50.6 kB/s) ...
Het vervelende van
mget
is dat het telkens om bevestiging vraagt. Na het commandoprompt off
vraagtmget
niets meer:ftp> prompt off Interactive mode off. ftp> mget * local: googleearth-package_0.5.4.dsc remote: googleearth-package_0.5.4.dsc 200 PORT command successful 150 Opening BINARY mode data connection for googleearth-package_0.5.4.dsc (835 bytes) 226 Transfer complete 835 bytes received in 0.01 secs (116.7 kB/s) local: googleearth-package_0.5.4.tar.gz remote: googleearth-package_0.5.4.tar.gz 200 PORT command successful 150 Opening BINARY mode data connection for googleearth-package_0.5.4.tar.gz (19720 bytes) 226 Transfer complete 19720 bytes received in 0.10 secs (185.4 kB/s) ... ftp>
- ascii en binary
Als we wat downloaden metget
ofmget
gaatftp
er meestal van uit dat het om binary files gaat. Indien we echter tekstfiles willen downloaden, komt hetEOF
karakter in binary mode niet altijd goed mee. Om hieraan te verhelpen kunnen we de download mode switchen tussen binary en ascii. Met het commandotype
brengen we de download mode op scherm.
Kijk even naar het volgende voorbeeld:... 230 Anonymous access granted, restrictions apply Remote system type is UNIX. Using binary mode to transfer files. ftp> ascii 200 Type set to A ftp> type Using ascii mode to transfer files. ftp> binary 200 Type set to I ftp> type Using binary mode to transfer files. ftp>
wget
als alternatief
Met de utilitywget
lukt een ftp download dikwijls beter dan met ftp zelf. Bij een onverwacht verbreken van de verbinding, hersteltwget
deze eigenhandig, en downloadt hij verder vanaf het punt waar hij reeds gekomen was.wget
is een één-regel-commando dat zich viaecho
makkelijk laat 'pipen' naarat
. Op die manier kunnen we een download schedulen.
$ wget ftp://ftp.debian.org/debian/pool/contrib/g/googleearth-package/* --2010-09-16 00:13:06-- ftp://ftp.debian.org/debian/pool/contrib/g/googleearth-package/* => `.listing' Resolving ftp.debian.org... 130.89.149.226, 2001:610:1908:a000::149:226 Connecting to ftp.debian.org|130.89.149.226|:21... connected. Logging in as anonymous ... Logged in! ==> SYST ... done. ==> PWD ... done. ==> TYPE I ... done. ==> CWD (1) /debian/pool/contrib/g/googleearth-package ... done. ==> PASV ... done. ==> LIST ... done. [ <=> ] 655 --.-K/s in 0s 2010-09-16 00:13:06 (90.7 MB/s) - `.listing' saved [655] Removed `.listing'. --2010-09-16 00:13:06-- ftp://ftp.debian.org/debian/pool/contrib/g/googleearth-package/googleearth-package_0.5.4.dsc => `googleearth-package_0.5.4.dsc' ==> CWD not required. ==> PASV ... done. ==> RETR googleearth-package_0.5.4.dsc ... done. Length: 835 100%[==========================================================>] 835 --.-K/s in 0.008s ...
$ echo "wget ftp://ftp.belnet.be/mirror/linuxmint/linuxmint-debian-201009-gnome-dvd-i386.iso" | at now +100 minutes warning: commands will be executed using /bin/sh job 4 at Thu Sep 16 01:57:00 2010