Způsobů jak sdílet data v domácí nebo podnikové síti je nepřeberné množství. Jedním z nich je právě užití SSH, protokolu SFTP a filesystému SSHFS.
SSHFS je linuxový souborový systém, založený na FUSE a využívající protokol SSH a jeho nástavbu SFTP. Dovoluje bezpečný, rychlý a spolehlivý přenos souborů mezi počítači v síti. Data i hesla jsou šifrována, proto potenciálnímu škodiči zabraňují v jednoduchém odposlechnutí a zobrazení dat.
Důvodů proč nepoužít například SAMBA server a nebo klasické FTP je hned několik.
SFTP a SSHFS nabízí bezpečný způsob přenosu dat. Data i zadávaná hesla jsou šifrována. Takže i kdyby je někdo odposlechl, bude mít velký problém s jejich dešifrováním a zobrazením. SFTP a SSHFS využívají ke svému provozu SSH, tedy je potřeba pouze jeden port. Který lze navíc využít víceúčelově.
Na rozdíl od SAMBA serveru, který se na první pohled jeví jako bezpečný a roztomiloučký. Na druhý pohled však zjistíme, že tomu tak není, nenabízí nativní šifrování dat, otevírá zbytečně další port. Může si však, v závislosti na konfiguraci, otevřít několik dalších portů, což je nežádoucí. A právě na otevřené porty se snaží připojovat botnety a jiní škodilové. Obzvláště, když se jedná o tak špatně zabezpečený protokol jakým SAMBA je.
Proč ne FTP, když je SAMBA tak zlá? FTP, jak je všeobecně známo, je starý protokol, diravý jak rok nošené ponožky a světu nevykecá jen to co neví... I když nabízí možnost šifrování pomocí SSL/TLS (FTPs), není to to pravé ořechové. Narozdíl od SAMBA serveru si otevírá jeden port, ale i tento port je častým cílem škodilů.
SSH/SSHFS nabízí bezpečný a rychlý přenos dat mezi počítači v síti, u protokolu FTP bezpečnost pokulhává, to se ovšem nedá říct o protokolu SMB/CIFS (SAMBA), který za sebou tahá nohu ...
SSHFS nabízí možnost přenášet data v obou směrech najednou a je schopno využít téměř plné rychlosti sítě a síťové karty. Režie na provoz v síti jsou minimální. Nároky na procesor (šifrování/dešifrování dat) jsou poněkud vyšší, na pomalejším stroji tak může dojít ke snížení rychlost přenosu.
SAMBA rovněž nabízí současný obousměrný provoz. Ale provozní režie jsou mnohonásobně vyšší. Z celkové rychlosti sítě SAMBA využije necelou polovinu kapacity pro přenos dat, zbytek zaberou režie protokolu. Takže i v seberychlejší síti je provoz pomalý.
FTP nabízí, v závislosti na FTP klientovi, také současný obousměrný přenos dat, ale podstatně pomalejší než SSHFS. Navíc jak bylo zmíněno výše, bezpečnost pokulhává.
SSH si otevře jeden port, nativně port 22. Tento jeden port využijete k více účelům a to ať už k připojení pomocí SSH, k přenášení dat pomocí SCP, nebo k připojení vzdáleného adresáře na nějaký lokální pomocí SSHFS
Použijete-li SAMBU, budete mít otevřené dva a případně více portů ... Tyto porty využijete jen pro provoz samby, případně je využije botnet k útoku nebo škodič k průniku.
V případě užití FTP, bude sice otevřen jeden port, ale nelze jej využít k ničemu jinémů než k provozování komunikace pomocí FTP protokolu.
V počítačí ke kterému se budeme přes SSHFS připojovat, musí běžet pouze SSH server. V jeho konfiguračním souboru /etc/ssh/sshd_config se musí nacházet řádek Subsystem sftp /usr/lib/openssh/sftp-server. Zda se zde nachází si ověříme pomocí příkazu: cat /etc/ssh/sshd_config |grep sftp
je-li vše v pořádku vypíše se výše zmíněný řádek bez #.
V počítači, ze kterého se budeme připojovat pomocí SSHFS, je toho potřeba udělat trošku víc. Je potřeba nainstalovat nebo skompilovat balíčky sshfs a fuse-utils, tyto balíčky se většinou nachází přímo v repozitáři dané distribuce.
Po nainstalování těchto balíčků je potřeba přidat aktuálního uživatele do skupiny fuse, to lze provést jednoduchým příkazem: sudo adduser $USER fuse
Nyní se už stačí jen odhlásit a přihlásit a můžeme začít využívat výhod SSHFS.
Používání SSHFS je jednoduché. Lze jej však ještě zjednodušit napsáním scriptu, ale o tom za chvilku.
Pro ilustraci budeme hovořit o místním adresáři SSHFS, vzdálený adresář porno. Ten se bude nacházet v domovské adresáři vzdáleného uživatele jménem pat. Místní uživatel se bude jmenovat mat. IP adresa vzdáleného počítače bude 10.0.0.1 ...
Chceme-li připojit vzdálený adresář na nějaký lokální, musíme nejprve vytvořit onen lokální adresář. Vytvořit jej můžeme například příkazem: mkdir ~/SSHFS
Případně si jej vytvořit v nějakém správci souborů.
Vzdálený adresář připojíme pomocí následujícího příkazu:
sshfs pat@10.0.0.1:/home/pat/porno /home/mat/SSHFS
Pozn.: Jméno, IP adresu, vzdálenou a lokální cestu k adresářům, je potřeba nahradit skutečnými údaji, tyto jsou pouze ilustrační.
Připojený adresář odpojíme pomocí příkazu:
fusermount -zu /home/mat/SSHFS
Pozn.: Tento příkaz je schopen adresář odpojit, i když je aktuálně používám. To může vést k poškození přenášených dat, je-li takto násilně přenos přerušen.
Abychom nemuseli psát zdlouhavý příkaz, je možné napsat script, ten následně umístit do adresáře /bin. Následně mu pomocí příkazu sudo chmod a+x /bin/sshfs-script
nastavit spustitelnost a následně spouštět tento script s krátkým názvem.
Příklad takového scriptu můžete vidět zde:
#!/bin/bash
## uzivatelsky definovatelne hodnoty
IPPREF="10.0.0"
IP="1"
DIR="SSHFS"
MNTDIR="/home/mat"
REMDIR="/home/pat/porno"
REMUSR="pat"
## konec uzivatelsky definovatelne hodnoty
if [ "$(cat /etc/mtab |grep $IPPREF.$IP)" != "" ]
then
echo "Adresar "$DIR" je nyni pripojen, prejete si jej: odmountovat (y) | znovu pripojit (r) | ponechat pripojeny (n)"
read SOUHLAS
if [ $SOUHLAS = "r" ]
then
fusermount -zu $MNTDIR/$DIR
echo "Adresar odmountovan, pokracuji v cinnosti"
elif [ $SOUHLAS = "y" ]
then
fusermount -zu $MNTDIR/$DIR
exit 1
else
echo "Vybrano neodpojovat, ukoncuji script"
exit 1
fi
else
echo
fi
if [ "$1" = "--root" ]
then
echo "Vzdaleny adresar bude pripojen s pravy roota"
sshfs root@$IPPREF.$IP:/ $MNTDIR/$DIR
else
echo "Vzdaleny adresar bude pripojen s pravy uzivatele $REMUSR"
sshfs $REMUSR@$IPPREF.$IP:$REMDIR $MNTDIR/$DIR
fi
Ukázkový script, včetně popisu, který řádek co znamená, naleznete ZDE.
V části scriptu označené jako ## uzivatelsky definovatelne hodnoty, nastavíme:
IP adresu (IPPREF a IP)
Další nastavení v tomto scriptu nejsou potřebná.
místní přípojný adresář (DIR)
cestu k přípojnému adresáři (MNTDIR)
vzdálený adresář (REMDIR)
vzdáleného uživatele (REMUSR)
V prostředí operačního systému Windows lze použít pro tento přístup libovolného klienta s podporou SFTP. KValitním a jednoduchým klientem je například WinSCP ...
Nezbývá než popřát příjemnou zábavu a mnoho ušetřených starostí při používání SSHFS ...