SFTP (SSH/Secure File Transfer Protocol) je standard síťového přenosu používaný k přenosu, přístupu a správě souborů přes vzdálenou síť. Obsahuje SSH (Secure Shell), díky čemuž je mnohem bezpečnější než protokol FTP.
Soubory jsou přenášeny prostřednictvím jediného řídicího kanálu v SFTP. Vyžaduje ověření a běží na portu 22. V SFTP poskytuje SSH shell šifrování, které pomáhá chránit uživatelská jména, hesla a další osobní data přenášená prostřednictvím SFTP.
V tomto návodu se naučíme vytvářet uživatele SFTP pro kořen dokumentu webového serveru.
Krok 1 – Instalace SSH (Secure Shell)
SFTP je velmi bezpečný protokol pro přenos souborů díky šifrování, které SSH poskytuje pro data přenášená po síti. SSH se standardně instaluje hlavně na linuxové distribuce, ale pokud není ve vašem systému předinstalovaný, můžete jej nainstalovat pomocí níže uvedeného příkazu:
sudo apt install ssh
Pokud je již nainstalován, příkaz upgraduje balíčky OpenSSH.
Krok 2 – Konfigurace SSH pro použití kódu serveru SFTP
Nyní otevřete konfigurační soubor SSH v textovém editoru a upravte jej pro kód serveru SFTP. Zde použijeme nano editor k úpravě konfiguračního souboru.
sudo nano /etc/ssh/sshd_config
Najděte řádek začínající „Subsystem sftp“.
Řádek okomentujte přidáním # na začátek řádku a za tímto řádkem napište následující řádek, jak je znázorněno na obrázku níže:
Subsystem sftp internal-sftp
SSHD použije kód serveru SFTP namísto spuštění serveru SFTP změnou výše uvedeného řádku.
Jakmile konfigurační soubor změníte, uložte soubor a ukončete jej pomocí klávesových zkratek CTRL+S a CTRL+X.
Po změnách musíme restartovat démona SSHD, aby změny fungovaly.
sudo systemctl restart sshd
Krok 3 – Vytvoření uživatele (uživatele SFTP)
Je vynikající praxí vytvořit nového uživatele, který má pouze přístup SFTP ke kořenovému adresáři dokumentu. Nedoporučuje se přidávat uživatele s právy Sudo do kořenového adresáře dokumentu webového serveru. Vytvořte nového uživatele pomocí příkazu adduser:
sudo adduser sftpuser
Terminál se zeptá na několik věcí, jako je nastavení hesla a informace o uživateli. Také se zeptá na několik dalších podrobností, takže je buď ponechte prázdné, nebo uveďte správné informace.
Nový uživatel se jménem sftpuser
je úspěšně vytvořen.
Krok 4 – Vytvoření odpovídající uživatelské směrnice v konfiguračním souboru SSH
Nyní tohoto uživatele omezíme na kořen dokumentu a také mu zakážeme přístup k SSH, aby se uživatel přihlásil přes SFTP.
Chcete-li omezit přístup uživatele, otevřete konfigurační soubor SSH v libovolném textovém editoru:
sudo nano /etc/ssh/sshd_config
Nyní přejděte na konec souboru a do konfiguračního souboru „sshd_config“ přidejte následující obsah:
Match User sftpuser ForceCommand internal-sftp ChrootDirectory /var/www/ PasswordAuthentication yes X11Forwarding no AllowTcpForwarding no
Ujistěte se, že jste nahradili uživatelské jméno „sftpuser“ uživatelským jménem, které jste nastavili.
Po přidání výše uvedeného obsahu do konfiguračního souboru SSH jej uložte a ukončete pomocí klávesových zkratek CTRL+S a CTRL+X.
Chcete-li zkontrolovat syntaxi a ověřit, zda vše proběhlo v pořádku, můžete provést příkaz:
sudo sshd -t
Pokud nenastala žádná chyba, mohli bychom znovu načíst službu SSH, aby změny fungovaly.
sudo systemctl restart sshd
Krok 5 – Přidání uživatele SFTP do skupiny www-data
Nyní přidáme uživatele do skupiny www-data provedením následujícího příkazu:
sudo usermod -a -G www-data sftpuser
Při úspěšném spuštění se nezobrazí žádný výstup.
Krok 6 – Nastavení oprávnění kořenového adresáře dokumentu
Postupujte prosím velmi pečlivě podle následujících pokynů, protože SFTP je velmi přísné, pokud jde o oprávnění k chroot adresáři.
- Začneme kontrolou aktuálních oprávnění a vlastnictví var:
sudo ls -ld /var/
- Oprávnění by měla být 755 a vlastník by měl být ve výchozím nastavení root. Pokud ne, proveďte níže uvedený příkaz a nastavte správná oprávnění:
sudo chmod 755 /var/
- Nyní použijte tento příkaz k nastavení správného vlastnictví:
sudo chown root:root /var/
- Protože jsme nastavili „/var/www/“ do adresáře chroot. Nyní nastavte správné vlastnictví adresáře chroot:
sudo chown root:root /var/www/
- Chcete-li skupině povolit zápis do kořenového adresáře dokumentu, nastavte její oprávnění na 755:
sudo chmod 755 /var/www/html/
- Chcete-li udělit vlastnictví kořenového adresáře dokumentu „/var/www/html“ a jeho dalších adresářů a souborů skupině www-data, použijte níže uvedený příkaz:
sudo chown -R www-data:www-data /var/www/html*
- Nyní udělte oprávnění 755 k obsahu umístěnému v kořenovém adresáři dokumentu „/var/www/html“ pomocí příkazu:
sudo find /var/www/html/ -type d -exec chmod 775 {} \;
- Výše uvedený příkaz udělí uživateli SFTP oprávnění ke čtení, zápisu a spustitelnosti adresářů.
Musíme také udělit oprávnění 664 všem souborům, které jsou přítomné v kořenovém adresáři dokumentu, abychom vlastníkovi a skupině uživatelů SFTP umožnili číst a zapisovat soubory:
sudo find /var/www/html/ -type f -exec chmod 664 {} \;
- Nyní v posledním kroku se ujistěte, že všechny nové soubory a adresáře získají skupinu www-data, kterou vytvořil nově vytvořený uživatel SFTP:
sudo find /var/www/html -type d -exec chmod g+s {} \;
Podobně použijte stejná oprávnění pro chroot:
sudo chmod 755 /var/www/
Gratulujeme! váš nový uživatel SFTP byl vytvořen a přidán do kořenového adresáře dokumentů webového serveru. Nyní se můžete přihlásit k SFTP.
Závěr
V tomto návodu jsme se naučili, jak nainstalovat a nakonfigurovat SSH pro použití kódu serveru SFTP. Poté jsme vytvořili nového uživatele, omezili ho na root dokumentů a zakázali jeho přístup SSH. Poté jsme uživatele přidali do kořenového adresáře dokumentů webového serveru, abychom mu umožnili číst, zapisovat a spouštět soubory v kořenovém adresáři dokumentu.