SFTP je zkratka pro „SSH File Transfer Protocol“. SFTP je protokol pro přenos souborů používaný k přenosu souborů mezi dvěma servery. Ve výchozím nastavení vám SFTP umožňuje přenášet soubory na všechny servery, které mají povolený přístup SSH. Udělí však terminálový přístup všem uživatelům a to se z bezpečnostních důvodů nedoporučuje.
V tomto tutoriálu se naučíme, jak vytvořit uživatele SFTP bez přístupu k shellu, aby měl uživatel pouze přístup SFTP a nikoli přístup SSH.
Předpoklady
- Nový CentOS 8 VPS na cloudové platformě Atlantic.net.
- Heslo uživatele root nakonfigurované na vašem serveru.
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte CentOS 8 s alespoň 1 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte k serveru CentOS 8, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
dnf update -y
Krok 2 – Vytvoření uživatele SFTP
Nejprve budete muset vytvořit nového uživatele s přístupem pouze pro přenos souborů. Nového uživatele s názvem sftp můžete vytvořit pomocí následujícího příkazu:
adduser sftp
Dále nastavte heslo pro výše uvedeného uživatele:
passwd sftp
Zadejte požadované heslo a stiskněte Enter.
Krok 3 – Vytvořte adresářovou strukturu pro přenos souborů
Dále budete muset vytvořit adresářovou strukturu pro přenos souborů, abyste omezili přístup SFTP na jeden adresář.
Nový adresář můžete vytvořit pomocí následujícího příkazu:
mkdir -p /opt/sftp/public
Dále nastavte vlastnictví adresáře /opt/sftp/ na root:
chown root:root /opt/sftp
Dále udělte správná oprávnění pomocí následujícího příkazu:
chmod 755 /opt/sftp
Dále nastavte vlastnictví veřejného adresáře na uživatele sftp:
chown sftp:sftp /opt/sftp/public
Krok 4 – Konfigurace SSH pro SFTP
Dále budete muset nakonfigurovat SSH tak, aby omezil přístup do jednoho adresáře a zakázal terminálový přístup uživateli sftp.
Můžete to udělat úpravou souboru /etc/ssh/sshd_config:
nano /etc/ssh/sshd_config
Na konec souboru přidejte následující řádky:
Match User sftp ForceCommand internal-sftp PasswordAuthentication yes ChrootDirectory /opt/sftp PermitTunnel no AllowAgentForwarding no AllowTcpForwarding no X11Forwarding no
Po dokončení uložte a zavřete soubor. Poté restartujte službu SSH, abyste provedli změny:
systemctl restart sshd
Krok 5 – Ověřte SFTP
Nyní ověřte přístup SFTP pomocí následujícího příkazu:
sftp [email protected]
Budete požádáni o zadání hesla, jak je uvedeno níže:
[email protected]'s password:
Zadejte své uživatelské heslo sftp a stiskněte Enter. Po připojení byste měli vidět následující výstup:
Connected to your-server-ip. sftp>
Dále spusťte následující příkaz pro zobrazení adresáře:
sftp> ls
Veřejný adresář byste měli vidět v následujícím výstupu:
public sftp>
Dále ověřte, zda jste schopni vytvořit připojení SSH nebo ne:
ssh [email protected]
Budete požádáni o zadání hesla, jak je uvedeno níže:
[email protected]'s password:
Zadejte své uživatelské heslo sftp a stiskněte Enter. Měli byste vidět následující výstup:
This service allows sftp connections only. Connection to your-server-ip closed.
Výše uvedený výstup znamená, že uživatel sftp již nemůže přistupovat k shellu serveru přes SSH.
Závěr
Gratulujeme! Úspěšně jste nakonfigurovali SFTP bez přístupu k shellu na CentOS 8. Toto nastavení můžete také použít pro více uživatelů a adresář. Začněte s SFTP ještě dnes na VPS od Atlantic.Net!