innan du börjar…
det är förvånande hur många webbutvecklare fortfarande är omedvetna om SFTP och fördelarna jämfört med FTP/FTPS. SFTP levereras med Linux-Server förinstallerad och fungerar precis som vanlig FTP, men är säkrare och mindre krångel att ställa in. Om din FTP-klient stöder SFTP, bör du använda den!
- så här konfigurerar du SFTP för en webbserverdokumentrot
installera vsftpd
låt oss börja med att uppdatera paketlistorna och installera vsftpd på Ubuntu 18.04 / 18.10 / 19.04 / 19.10. – herr talman!,
nedan har vi två kommandon åtskilda av &&
. Det första kommandot uppdaterar paketlistorna så att du får den senaste versionen och beroenden för vsftpd. Det andra kommandot hämtar och installerar sedan vsftpd. Tryck på y
och ENTER
när du blir ombedd att fortsätta.
sudo apt update && sudo apt install vsftpd
en gång installerat, kontrollera status för vsftpd
sudo service vsftpd status
ovan kan vi se vår FTP-server är nu igång.,
konfigurera brandvägg
om du inte redan har gjort det rekommenderas att du aktiverar brandväggenufw
för Ubuntu 18.04 / 18.10 / 19.04 / 19.10. – herr talman! Innan du aktiverar ufw
brandvägg, se till att du lägger till en regel för SSH, annars kan du bli låst från din server om du är ansluten på distans. Om du inte vill ställa in en brandvägg, Hoppa till steg 3.
sudo ufw allow OpenSSH
låt oss öppna portar 20 och 21 för FTP och portar 40000-50000 för passiv FTP. Vi öppnar också port 990 för TLS, som vi kommer att ställa upp senare.,
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
sudo ufw allow 990/tcp
Aktivera nu brandväggen om den inte redan finns. Tryck på y
och ENTER
om du varnade för att störa SSH-anslutningen.
sudo ufw enable
för att kontrollera brandväggens status, kör:
sudo ufw status
om brandväggen körs bör du seStatus: active
och brandväggsreglerna vi just lagt till.
skapa FTP-användare
Vi kommer nu att skapa en ny användare som vi kommer att använda för att logga in på FTP., I det här exemplet skapar vi en ny användare som heter ftpuser
.
sudo adduser ftpuser
skapa ett starkt lösenord och håll det säkert.
Du kan också bli ombedd att ange vissa kontaktuppgifter. Du kan bara trycka på ENTER
till var och en av dessa.
om du bara vill att ftpuser
ska logga in via FTP, bör du inaktivera deras SSH-åtkomst genom att svartlista sitt användarnamn i SSH-konfigurationsfilen. Annars hoppa till steg 4.
Öppna SSH-konfigurationen i nano.,
sudo nano /etc/ssh/sshd_config
Lägg till följande i botten av filen som ersätterftpuser
med användaren du vill neka SSH och SFTP-åtkomst. Du kan lägga till flera användare här åtskilda av ett enda utrymme. (Om du vill klistra in nano trycker du på höger musknapp).
DenyUsers ftpuser
för att spara fil och avsluta, tryckCTRL
+ X
, tryck påY
och tryck sedan påENTER
.
Starta om SSH-tjänsten.,
sudo service sshd restart
katalogbehörigheter
Du måste nu bestämma var den nya FTP-användaren får visa och ladda upp filer.
vsftpd använder chroot-fängelser för att begränsa användarna till sina hemkataloger och kräver att hemkatalogen inte är skrivbar. Av den anledningen måste vi ställa in några kataloger och behörigheter.
om du planerar att använda detta FTP-användarkonto för att ladda upp filer till en webbserver fortsätter du till steg 4.1. Om du bara vill ladda upp till en hemmapp, Hoppa till steg 4.2.
4.1., Ladda upp till en webbserver
i många fall vill du kunna ladda upp filer till dokumentroten på webbservern.
om du följde en tidigare guide här för att konfigurera flera domäner kan din dokumentrot vara placerad i någonstans som /var/www/test1.com/public_html
– I så fall måste du ställa in hemmappen förftpuser
till mappen ovanför dokumentroten: /var/www/test1.com
(ersätt test1.com för din egen domän).,
om du inte använder flera domäner antar vi att du använder standarddokumentroten /var/www/html
för både Apache och Nginx i Ubuntu 18.04 / 18.10 / 19.04 / 19.10. – herr talman! I det här scenariot måste vi göra/var/www/
hemkatalogen för vår användareftpuser
.
låt oss ställa in mappen ovanför dokumentroten som hemkatalog för ftpuser
.
sudo usermod -d /var/www ftpuser
detta gör det möjligt för vår FTP-användare att skriva och ändra filer i dokumentets rotkatalog.,
sudo chown ftpuser:ftpuser /var/www/html
hoppa nu till steg 5 för att konfigurera vsftpd.
4.2 Ladda upp till en hemmapp
om du istället vill att den här användaren ska ladda upp filer till hemkatalogen, skapa en ny katalog som heter ftp
I användarens hemkatalog och en annan i den som heter files
. I det här exemplet kallas vår användare ftpuser
.
sudo mkdir /home/ftpuser/ftp
Ställ in äganderätten till katalogenftp
till ingennobody:nogroup
.,
sudo chown nobody:nogroup /home/ftpuser/ftp
Ange behörigheter för katalogenftp
medchmod
så att den inte är skrivbar av någon, annars tillåter vsftpd inte att du loggar in. a-w
betydera
= alla/alla-
= ta bortw
= skrivbehörighet, så ta bort skrivbehörigheter för alla.
sudo chmod a-w /home/ftpuser/ftp
nästa kommer vi att skapa en ny katalog inom /ftp
där användaren kan visa och ladda upp filer.,
sudo mkdir /home/ftpuser/ftp/files
tilldela äganderätten till den här katalogen till vår nya FTP-användare annars kommer de inte att kunna skriva till den.
sudo chown ftpuser:ftpuser /home/ftpuser/ftp/files
konfigurera vsftpd
det finns några ändringar som vi måste göra i vsftpd-konfigurationsfilen innan du kan börja använda FTP på Ubuntu 18.04 / 18.10 / 19.04 / 19.10. – herr talman!
innan du redigerar konfigurationsfilen skapar du en säkerhetskopia.
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
Öppna nu konfigurationsfilen inano
– redigeraren.,
sudo nano /etc/vsftpd.conf
det här är en ganska stor fil men den är mestadels fylld med kommentarer som hjälper dig med.
Du måste gå ner i filen och se till att inställningarna matchar dem nedan. OBS! Du kan söka i nano
med CTRL
+ W
leta efter #write_enable=YES
och Avkommentera det genom att ta bort # – tecknet. Detta gör det möjligt för FTP-användare att skriva filer till servern.
write_enable=YES
leta efter #chroot_local_user=YES
och Avkommentera det genom att ta bort # – tecknet. Detta kommer att förhindra FTP-användare från att surfa utanför sin egen katalog.
chroot_local_user=YES
leta efter #local_umask=022
och Avkommentera det genom att ta bort # – tecknet. Detta kommer att ge uppladdade filer och mappar rätt behörigheter.
local_umask=022
Vi måste nu lägga till några direktiv som inte finns i filen.,
eftersom Linux inte visar filer som börjar med en punkt, kommer filer som.htaccess
inte att synas i FTP. Detta kan vara ett problem om du tänker använda Apache och vill arbeta med .htaccess
.
för att tvinga vsftpd att visa filnamn som börjar med en punkt, klistra in följande längst ner i filen. (För att klistra in nano, tryck på höger musknapp)
force_dot_files=YES
slutligen, låt oss lägga till några portområden för passiv FTP för att se till att tillräckligt många anslutningar är tillgängliga. Klistra in följande längst ner i filen., (För att klistra in nano, tryck på höger musknapp)
pasv_min_port=40000pasv_max_port=50000
om du följde steg 4.2 tidigare och bara vill att den här användaren ska ladda upp filer till hemmappen måste vi berätta för vsftpd att local_root
är mappen /ftp
som vi skapade tidigare.
lägg inte till dessa två rader om du vill att användaren ska ladda upp till webbdokumentets rot!
user_sub_token=$USERlocal_root=/home/$USER/ftp
Vi är klara med vsftpd.conf för tillfället men kommer tillbaka i senare steg för att ställa in säkerhet och SSL.,
om du vill spara filen och avsluta trycker du påCTRL
+ X
genom att trycka påY
och sedan trycka påENTER
.
Starta om vsftpd.
sudo systemctl restart vsftpd
testa FTP
Vi kan nu testa vsftpd för att se om vi kan logga in som användaren vi skapade tidigare. Vi rekommenderar FileZilla, som fungerar på Windows, Mac och Linux.
ange serverns IP, ditt FTP-användarnamn och lösenord som du skapade tidigare och klicka på Quickconnect.,
ovan kan vi se att vi har anslutit framgångsrikt och webbrotkatalogen html
visas, även om detta kan vara annorlunda på din server.
försök att ladda upp, skapa och redigera mappar och filer i webbrotkatalogen för att säkerställa att behörigheterna fungerar korrekt.
Du kommer att märka att vi har en varning i FileZilla ”Status: osäker server, det stöder inte FTP över TLS.”Det rekommenderas starkt att du nu konfigurerar TLS så att inloggningsuppgifter och trafik krypteras över FTP-anslutningen.,
om du har problem med att logga in på FTP-servern kan du prova att kontrollera vsftpd-loggen. För att visa de senaste 200 posterna medtail
:
sudo tail /var/log/vsftpd.log -n 200
säker FTP med TLS (tillval)
det är viktigt att komma ihåg några saker när du använder FTP – det är inte krypterat som standard vilket innebär att dina referenser och filer som du skickar är sårbara för avlyssning. För att åtgärda detta bör du ansluta till vsftpd att använda FTPS (FTP över SSL/TLS).
låt oss börja med att skapa ett nytt certifikat med verktygetopenssl
.,
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Du kommer att bli ombedd att ange några detaljer som land etc. Du behöver inte fylla i de här. Du kan bara trycka på ENTER
för standardvärden.
nu när din privata nyckel har skapats, finns det några ändringar som vi måste göra i vsftpd-konfigurationsfilen.
Öppna konfigurationsfilen i nano
editor.
sudo nano /etc/vsftpd.conf
hitta följande rad: (Obs: Du kan söka inano
medCTRL
+ W
)
ssl_enable=NO
ändra det till:
ssl_enable=YES
klistra in följande under den.
spara filen och avsluta (tryck på CTRL
+ X
, tryck på Y
och tryck sedan på ENTER
).
Starta om vsftpd.
sudo systemctl restart vsftpd
testa TLS med FileZilla
Vi kan nu testa TLS. Vi rekommenderar FileZilla, som fungerar på Windows, Mac och Linux.,
ange serverns IP, ditt FTP-användarnamn och lösenord som du skapade tidigare och klicka på Quickconnect.
Du kan få en okänd Certifikatvarning. Klicka på Lita alltid på certifikatet i framtida sessioner och klicka på OK.
om du är ansluten via TLS, kommer det att berätta i anslutningsloggen. Du kommer också att se ett hänglås i nedre högra hörnet.
du är klar!,
låt mig veta om detta hjälpte. Följ mig på Twitter, Facebook och YouTube, eller Friday buy me a smoothie.
p.s. jag ökade mina AdSense-intäkter med 68% med hjälp av AI. Läs min Ezoic recension för att ta reda på hur.
Lämna ett svar