Autofs och sshfs – det perfekta paret

Varför ska jag använda sshfs kanske du undrar?

sshfs kan användas för att “mount:a” ett ssh konto “remote” på din lokala disk. Helt fantastiskt om man exempelvis vill komma åt sina filer på resande fot, eller vill strömma media från ett NAS man inte har lokal tillgång till (varianterna är förstås nästintill oändliga).

För att mount:a en katalog via en kompis linux-dator till din egna, använder man enkelt bara följande kommando i terminalen eller via shell:

tekkblogg@htpc:~$ sshfs tekkblogg@fubar.se: /sshfs

Det här mount:ar innehållet på servern “fubar.se” under mappen sshfs (i det här fallet hemkatalogen) på din lokala dator. Om du har en snabb uppkoppling kommer du inte ens märka av att det faktiskt inte är ditt lokala innehåll som finns i katalogen, utan fubar.se serverns innehåll. Praktiskt, eller hur?

“Introducing autofs” – automatiserad variant av samma kommando

Det fina med autofs är att kommandoraden ovanför inte längre är nödvändig när man vill mount:a katalogen vid varje uppstart av datorn eller ifall din uppkoppling bryts. Tillsammans blir de båda kommandona en automatiserad tjänst och du behöver bara gå in i katalogen du remote mount:at för att komma åt innehållet (det är i alla fall tanken med den här guiden).
Förklaringar:
Rader som står i kursivt med ett $-tecken framför, betyder att det är ett kommando som skall skrivas in i ett terminalfönster
Rader i kursivt UTAN $-tecken betyder att det är en rad som ska skrivas in i en fil (använd $ sudo nano <fil> för att öppna en fil)

Installera FUSE
Det är relativt lätt att installera paketen som behövs, följande kommando förutsätter att du kör Debian/Ubuntu (utan $-tecknet):

$ sudo apt-get install sshfs fuseutils autofs

Sen behöver modulen laddas in i kärnan (kernel:n):

$ sudo modprobe fuse

Lägg därefter till raden fuse i filen /etc/modules (sudo nano /etc/modules)

Sista delen i att fixa FUSE är att lägga till de användare som ska kunna använda FUSE i gruppen FUSE (ändra “tekkblogg” till din användare nedan):

$ sudo usermod -a -G fuse tekkblogg

Logga ut och in igen för att det skall fungera.

Konfigurera ssh och autofs
Först av allt måste vi skapa ssh-nycklar så vi slipper skriva in lösenordet varje gång uppkopplingen sker.

$ ssh-keygen -t dsa
Nu ska vi flytta över den publika nyckeln vi skapat till fjärr-servern (fubar.se) med inloggningsnamnet “tekkblogg”:

$ ssh-copy-id -i .ssh/id_rsa.pub tekkblogg@fubar.se

Därefter ska vi skapa kataloger som fjärr-innehållet kan mount:as i:

$ mkdir /mnt/sshfs

Härnäst ska vi lägga till en rad i filen /etc/auto.master , men innan dess måste vi veta userid , därför kör vi:

$ cat /etc/passwd | grep tekkblogg
tekkblogg:x:1000:1000:Tekkblogg,,,:/home/tekkblogg:/bin/bash

Som synes är vårt userid 1000. Nu skall vi redigera /etc/auto.master ($ sudo nano /etc/auto.master) med raden:

/mnt/sshfs /etc/auto.sshfs uid=1000,gid=1000,–timeout=60,–ghost

Till sist behöver vi skapa filen /etc/auto.sshfs och lägga till motsvarande rad:

fubar -fstype=fuse,ro,nodev,nonempty,noatime,allow_other,max_read=65536 :sshfs\#tekkblogg@fubar.se\:/remote-path/with/sub-dirs
(om ni vill ha skrivrättigheter, ändra “ro” till “rw”)

Det här kommer montera remote-systemet i katalogen /mnt/sshfs/fubar varje gång vi försöker komma åt den katalogen. Använder jag inte katalogen på 60 sekunder så kommer den avmonteras. Har du flera serverar du vill montera så lägger du bara till dessa separata rader som ovan i filen /etc/auto.sshfs

Notera: Om du gör det här på en dator som inte kräver någon inloggning och den blir stulen så kommer tjuven att kunna komma åt hela innehållet på fjärr-servern!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s