FTP to stary protokół (prawie tak stary jak ten drugi co przerobiono na rozsyłacz spamu). Nie jest bezpieczny (hasło przelatuje niezaszyfrowane), nie jest szybki (tyle pingów i łączeń na każdą komendę jest wolne nawet na grubym łączu), nie jest niezawodny (wymaga otwierania dodatkowych portów u klienta albo na serwerze i dodatkowego wsparcia u klientów), nie jest nawet do końca uniwersalny (są problemy z linkami symbolicznymi).
Jak nie FTP, to co?
SFTP, czyli przesyłanie plików przez SSH (AKA scp). Dane i hasła są przesyłane w bezpieczny sposób (choć pewnie mało kogo to obchodzi), a jako dodatkowy bonus można logować się do serwera nie podając hasła w ogóle – SSH potrafi załatwić uwierzytelnianie metodą klucza publicznego.
Zabezpieczenie SFTP
Czym?
Prawie każdy szanujący się klient FTP obsługuje też SFTP.
Targanie plików:
- FileZilla client, Directory Opus 8 + plugin (Windows)
- Cyberduck (OS X)
- sftp user@host (każde unixopodobne). Można też użyń FUSE/MacFUSE i sshfs.
Wystarczy przy łączeniu się zaznaczyć, że chce się SFTP port 22 zamiast FTP port 21.
Uwierzytelnianie bez hasła
(Ten opis jest jeszcze zbyt lakoniczny, żeby ktoś “zielony” dał radę – wyszukiwarki Twoim przyjacielem.)
Wymaga wygenerowania pary kluczy — prywatnego (chroń dobrze, nikomu nie udostępniaj!) i publicznego (ten powinieneś rozdawać). Następnie wymaga użycia “agenta”, który będzie prywatny klucz udostępniał przy logowaniu.
- PuttyGen i Agent z Putty (Windows)
- wbudowane w Cyberduck dla OS X
- “eval `ssh-agent`; ssh-add klucz” na wszystkim unixopodobnym. Można też wrzucić dane do logowania (ze scieżką do klucza włącznie) do pliku ~/.ssh/config
Podręcznik admina
- Założ systemowe konta dla użytkowników (pewnie pod FTP i tak już są)
- Jeśli nie chcesz dawać praw do shella przez SSH, a jedynie transferu plików:
- zainstaluj rssh
- zmień użytkownikom /bin/bash na /usr/bin/rssh (sprawdź: “which rssh”) w /etc/passwd
- Wydobądź od użytkowników klucz publiczny. Ma to być RSA 1024 bity. PuttyGen wymaga użycia opcji eksportowania do OpenSSH. Klucz to jest jedna długaśna linijka w stylu “ssh-rsa AAAAB3NzaC1yc2EAAAA…fXsG9t0= jakiś komentarz”
- doklej klucz publiczny jako jedną linijkę do /home/nazwaużytkownika/.ssh/authorized_keys (uwaga na pisownię)
- chmod 644 authorized_keys