Hogyan érhetünk el linux rendszerről távoli szervereken lévő SSH fájlrendszereket

botond küldte be 2019. 10. 29., k - 20:36 időpontban

Tartalom

 

Bevezető

Ha gyakran dolgozunk távoli fájlrendszereken, akkor praktikus megoldás, ha ezeket a saját fájlrendszerünkbe csatoljuk fel, így nem kell minden alkalommal belépni a másik gépre, vagy csatlakozni bármilyen kiszolgálóhoz, hanem úgy tudjuk használni az adott tárhelyet, mintha az a saját gépünk helyi könyvtára lenne. Ez jól jöhet például ha mondjuk egy weboldalt kell fejlesztenünk, vagy ha csapatban végezzük a munkát egy közös tárhelyen, vagy akár csak szeretnénk megosztani két otthoni linuxos gép között egy könyvtárat, stb.

Korábban már esett szó arról, hogyan érhetünk el Windows számítógépről távoli Linux szervereken lévő SSH (SFTP) alapú fájlrendszereket, ebben a leírásban pedig linuxos gépen fogunk ugyanilyen SSHFS típusú fájlrendszert elérni, és felcsatolni helyi könyvtárként.

 

 

Alapfeltételek

Ehhez az összeállításhoz két linuxos gépet használunk, jelen esetben én két Debianon viszem végig a feladatot. Az egyik lesz a szerver, amin rendelkeznünk kell legalább egy SSH hozzáféréssel, a másik pedig a kliens, ahol root jogosultsággal kell rendelkeznünk. Ez utóbbival nyilván nem lehet gond, ha az otthoni gépünkről van szó. A szerver lehet egy bármilyen távoli gép, vagy akár az otthoni hálózatunk egy másik számítógépe is. A lényeg, hogy be tudjunk lépni kívülről a gépbe SSH-n keresztül. Ha esetleg erre még nem volt módunk, akkor a szerver gépen telepítsük az openssh-server csomagot:

apt-get install openssh-server

Eddig tehát minden rendelkezésre áll: adott a két gép, közöttük a hálózati kapcsolat, és a kliensről be tudunk lépni a szerverre SSH-n keresztül.

Ezután a kliens gépen telepítsük az SSHFS használatához szükséges sshfs csomagot (root-ként):

apt-get install sshfs

Csatolási könyvtár létrehozása

A kliens gépen hozzunk létre egy csatolási könyvtárat, amibe csatolni fogjuk a távoli SSHFS megosztást. Például:

mkdir /helyi/csatolasi/konyvtar

Hozzunk létre a saját igényeinknek megfelelően, ahol majd elérhetjük a távoli tartalmat.

 

Távoli fájlrendszer felcsatolása

Távoli SSHFS fájlrendszert kétféleképpen is felcsatolhatunk. Átmeneti vagy tartós módon.

Fájlrendszer átmeneti használata az sshfs parancs segítségével

Az sshfs linux parancs segítségével átmenetileg csatolhatunk fel SSHFS fájlrendszereket, amik a kliens gép újraindítása után megszűnnek:

sudo sshfs -o allow_other <felhasználó>@<szerver>:</abszolút/elérési/út> </helyi/csatolási/pont>

Alapértelmezetten csak root-ként lehet használni az sshfs mountolást, ahol a paraméterek a következők:

  • -o kapcsolóval adhatunk meg további opciókat a parancsnak. Jelen esetben itt az allow_other opció engedélyezi a csatoláshoz való hozzáférést a többi felhasználónak.
  • Ezt követi a távoli gép felhasználóneve, hosztneve (vagy IP-címe), ami után rögtön jön egy kettőspont, utána pedig a távoli gépen elérni kívánt alkönyvtár abszolút elérési útja.
  • És végül a helyi csatolási könyvtár, amit korábban létrehoztunk – ahol megjelenik a távoli könyvtár tartalma.

Ezeknél ügyeljünk, hogy a "felhasználónév@hosztnév:/utvonal" résznek egyben kell lennie, ne lerüljön bele szóköz, mert ez az sshfs egyik paramétere így egyben.

A parancs kiadása után a rendszer bekéri tőlünk a cél felhasználó jelszavát.

Ha sima felhasználóként is szeretnénk tudni SSHFS fájlrendszert mountolni, akkor nyissuk meg a /etc/fuse.conf fájlt:

nano /etc/fuse.conf

És vegyük ki a kommentet a "user_allow_other" sora elől. Ilyenkor tartsuk szem előtt, hogy az SSHFS csatolás megszüntetését továbbra is csak root végezheti!

Fájlrendszer jelszó nélküli csatolása nyilvános kulcs segítségével

Ha nem szeretnénk minden alkalommal begépelni a jelszavunkat, amikor felcsatolunk egy SSHFS fájlrendszert, akkor hajtsuk végre az SSH belépés jelszó nélkül, nyilvános kulcs segítségével cikkben leírtakat, és a rendszer nem fogja bekérni azután a jelszót.

 

 

Megszűntetés

Az SSHFS mountolást csak root-ként az umount paranccsal szűntethetjük meg:

umount /helyi/csatolási/könyvtár

Fájlrendszer tartós felcsatolása az fstab használatával

Ha nem szeretnénk minden gép újraindítás után lefuttatni root-ként az sshfs parancsot a távoli fájlrendszer felcsatolásához, akkor kiváló megoldás, ha a /etc/fstab fájlba tesszük be a megfelelő beállítást.

Fontos!
Itt fontos megjegyezni, hogy ez a módszer csak a nyilvános kulcsos belépés beállítása után fog működni! Ellenkező esetben a boot folyamat során nem történik meg a távoli SSHFS fájlrendszer felcsatolása.

Lássuk az fstab beállítását az én konkrét példámmal, azután részletesen leírom a paraméterek jelentését. Tehát a saját fstab sorom:

botond@asztali:/mnt/drive-d /mnt/asztali_d      fuse.sshfs      defaults,_netdev,user,idmap=user,identityfile=/home/botond/.ssh/id_rsa,allow_other,default_permissions,uid=botond,gid=botond 0 0

Ebben a példában az asztali gépem /mnt/drive-d könyvtárát csatolom fel a laptopom helyi /mnt/asztali_d könyvtárába, ahol a többi paraméter a következő:

  • fuse.sshfs: Fájlrendszer típusa
  • Mount opciók, ezeket külön bontva sorolom fel (vesszőkkel elválasztott felsorolás, nem lehet közöttük szóköz!):
    • defaults: Biztosítja az alapértelmezett mount opciókat, plusz ehhez jön hozzá a többi.
    • _netdev: Ez az opció jelzi, hogy ez nem egy blokk eszköz, hanem egy hálózati eszköz. Így ennek a mountolására csak akkor kerül sor, miután felépült a hálózati rész.
    • user: Bármely felhasználónak engedélyezi a fájlrendszer csatolását.
    • idmap=user: Az sshfs automatikusan konvertál a helyi a távoli felhasználók azonosítói között. Így a felcsatolt fájlrendszer felhasználói ID-i kompatibilisek lesznek a helyi fájlrendszerrel.
    • identityfile: Itt kell megadnunk a sima felhasználónk privát kulcsát a távoli gépen történő azonosításhoz (vagy ha a helyi root felhasználó nyilvános kulcsa is fel van telepítve a távoli gépre, akkor ez ki is hagyható).
    • allow_other: Hozzáférést biztosít a "megosztáshoz" más felhasználók számára is, így nem csak a mountoló felhasználó férhet hozzá.
    • default_permissions: Engedélyezi, hogy a kernel ellenőrizze a távoli fájlrendszer tényleges jogosultságait.
    • uid=xxx és gid=xxx: Itt állíthatjuk be, hogy melyik helyi felhasználónak a nevében történjen az SSHFS megosztása.
  • 0 (első 0): Dumpolás, azaz készüljön-e erről a fájlrendszerről biztonsági másolat. A legtöbb esetben 0 értékre állítják
  • 0 (második 0): Az fsck eszköz ennek megfelelő sorrendben ellenőrzi a fájlrendszereket. A 0 értékeknél nincs ellenőrzés. Távoli fájlrendszer esetében természetesen nem kell ellenőrizni a fájlrendszer integritását, ez a fájlrendszert fenntartó távoli gép dolga.

Ezek tehát az fstab beállítások, amikkel a kliens gép újraindítása után automatikusan bemountolja a távoli SSHFS fájlrendszert.

Természetesen vannak még egyéb beállítások is, amikről például itt is tájékozódhatunk, így mindenki saját ízlése szerint fűszerezheti még az fstab beállításait a számára megfelelő működés érdekében. Nálam a fentiek tökéletesen működnek, így ezt használom.

 

Konklúzió

Az SSHFS fájlrendszer használata hasznos dolog, így kényelmesen elérhetjük dolgainkat mindegyik gépünkön, vagy ennek segítségével akár egy éles szerveren kialakított backup könyvtárstruktúrát is használhatunk otthoni gépünk adatainak kényelmes biztonsági mentésére.