FB Share Icon

Sdílení souborů pomocí SSH a SSHFS 29.7.2010

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. smile

Co je to vlastně to SSHFS, SFTP a SSH?

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.

Proč se vydat cestou SSHFS a ne jinou?

Důvodů proč nepoužít například SAMBA server a nebo klasické FTP je hned několik. smile

Bezpečnost

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ě. smile

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í... smile 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 ... smile

Rychlost

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á.

Flexibilita

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ů ... smile Tyto porty využijete jen pro provoz samby, případně je využije botnet k útoku nebo škodič k průniku. smile

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.

Zprovoznění SSHFS

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. smile 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. smile smile

Použití SSHFS

Používání SSHFS je jednoduché. smile Lze jej však ještě zjednodušit napsáním scriptu, ale o tom za chvilku. smile

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 ... smile smile smile

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ů. smile

Příkaz pro připojení a odpojení

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.

Připojovací script

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)
místní přípojný adresář (DIR)
cestu k přípojnému adresáři (MNTDIR)
vzdálený adresář (REMDIR)
vzdáleného uživatele (REMUSR)
Další nastavení v tomto scriptu nejsou potřebná.

A co chuděrka Windows?

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 ... smile

Závěrem

Nezbývá než popřát příjemnou zábavu a mnoho ušetřených starostí při používání SSHFS ... smile smile

kategorie: pc a linux | přejít: nahoru | zobrazit: aktuální články

Copyright © Freezy | e-mail | jabber | Created by Meebio Webdesign, All rights reserved | Odkazy | Nahoru