SFTP działa w ramach istniejącego połączenia SSH, więc nie wymaga dodatkowego oprogramowania na serwerze ani kolejnego portu. Na VPS Linux Infrawire to najbezpieczniejszy sposób wysyłania strony lub pobierania kopii zapasowych w graficznym kliencie takim jak FileZilla. Poradnik obejmuje logowanie hasłem i kluczem, uprawnienia plików oraz użytkownika ograniczonego do SFTP.
📋 Wymagania wstępne
- VPS z Linuxem (Ubuntu 24.04, Debian 12, AlmaLinux 9 lub Rocky 9) z działającym SSH na porcie 22.
- Adres IP VPS i hasło roota z panelu klienta.
- FileZilla Client zainstalowany na komputerze (Client, a nie FileZilla Server).
1. Szybkie połączenie hasłem
Na pierwszy test użyj paska szybkiego łączenia u góry FileZilli:
- Host:
sftp://VPS_IP - Nazwa użytkownika:
USER - Hasło: Twoje hasło
- Port:
22
Przy pierwszym połączeniu zaakceptuj klucz hosta. Prawy panel pokazuje drzewo plików serwera. Lepiej używać zwykłego użytkownika niż roota: błędne kliknięcie zrobi mniej szkód.
Bashadduser USER usermod -aG sudo USER
Na AlmaLinux lub Rocky użyj useradd -m USER, passwd USER i usermod -aG wheel USER.
2. Logowanie kluczem SSH
Klucze są bezpieczniejsze niż hasła i nie da się ich złamać atakiem brute-force. Na swoim komputerze wygeneruj parę kluczy i skopiuj część publiczną na serwer.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
W FileZilli otwórz Edycja > Ustawienia > Połączenie > SFTP > Dodaj plik z kluczem i wskaż swój klucz prywatny (plik bez .pub). FileZilla może zaproponować konwersję do własnego formatu; zaakceptuj. Nigdy nie udostępniaj klucza prywatnego.
3. Zapisanie połączenia w Menedżerze witryn
- Otwórz Plik > Menedżer witryn i kliknij Nowa witryna.
- Protokół: SFTP - SSH File Transfer Protocol.
- Host:
VPS_IP, Port:22. - Typ logowania: Zwykły dla hasła lub Plik klucza dla klucza.
- Użytkownik:
USER. Na karcie Zaawansowane ustaw domyślny katalog zdalny, na przykład/var/www/example.com. - Kliknij Połącz. Witryna zostanie zapamiętana na przyszłość.
Nie zapisuj haseł na komputerze, którego nie kontrolujesz.
4. Ustawienie właściciela i uprawnień plików WWW
Wysłane pliki często mają złego właściciela, co powoduje błędy 403 lub 500. Przekaż katalog WWW swojemu użytkownikowi i pozwól serwerowi WWW go odczytywać.
Bashmkdir -p /var/www/example.com chown -R USER:www-data /var/www/example.com find /var/www/example.com -type d -exec chmod 755 {} \; find /var/www/example.com -type f -exec chmod 644 {} \;
Na AlmaLinux i Rocky grupa serwera WWW to apache zamiast www-data. Katalogi, do których aplikacja musi zapisywać (uploady, cache), można ustawić na 775, z grupą serwera WWW jako grupą właściciela. Nigdy nie używaj chmod -R 777. W FileZilli możesz też kliknąć plik prawym przyciskiem i wybrać Uprawnienia pliku.
5. Opcjonalnie: użytkownik tylko SFTP zamknięty w katalogu
By dać klientowi dostęp tylko do jednego katalogu bez powłoki, użyj chroot. Sam katalog chroot musi należeć do roota i nie może być zapisywalny dla nikogo innego, inaczej sshd odrzuci logowanie.
Bashgroupadd sftpusers useradd -M -d /files -s /usr/sbin/nologin -G sftpusers CLIENT passwd CLIENT mkdir -p /var/sftp/CLIENT/files chown root:root /var/sftp/CLIENT chmod 755 /var/sftp/CLIENT chown CLIENT:CLIENT /var/sftp/CLIENT/files
Dopisz ten blok na końcu /etc/ssh/sshd_config:
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
Przed przeładowaniem sprawdź składnię i nie zamykaj bieżącej sesji SSH, dopóki nie potwierdzisz, że nowe logowanie działa.
Bashsshd -t systemctl reload ssh
Usługa nazywa się ssh na Ubuntu i Debianie oraz sshd na AlmaLinux i Rocky. Ograniczony użytkownik trafia do /files i nie widzi niczego więcej.
Weryfikacja
Przetestuj w terminalu, zanim obwinisz FileZillę:
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
Następnie wyślij plik przez FileZillę i sprawdź jego właściciela poleceniem ls -l /var/www/example.com.
Rozwiązywanie problemów
- Połączenie odrzucone lub przekroczony czas: sprawdź, czy sshd działa (
systemctl status ssh), czy port jest otwarty w zaporze i czy wybrano SFTP, a nie FTP. - Permission denied (publickey): klucza nie ma w
~/.ssh/authorized_keysalbo uprawnienia są złe. Napraw przezchmod 700 ~/.sshichmod 600 ~/.ssh/authorized_keys. - Użytkownik w chroot rozłączany zaraz po zalogowaniu: katalog chroot nie należy do roota lub jest zapisywalny dla grupy. Szukaj „bad ownership or modes for chroot directory” w
journalctl -u ssh. - Nie można wysłać pliku, brak uprawnień do katalogu: użytkownik nie jest właścicielem celu. Powtórz polecenia
chownichmodz kroku 4.
✅ Możesz już bezpiecznie przesyłać pliki na swój VPS z Linuxem przez FileZillę.