När jag började köra Linux på allvar för en massa år sedan så var en av de saker jag hade svårt att komma över att det inte gick att ”bläddra” i nätverket och ”ansluta” delade nätverksresurser på samma sätt som i Windows.
Ganska snabbt så hittade jag Samba som lägger till mycket av den funktionalitet som jag saknade inklusive vissa Active Directory-liknande tjänster samt skrivardelning. Pilligt och krångligt, men det går…
Nu har täckelsen fallit från mina ögon och jag har sett ljuset! Aldrig mera Samba för mig!!
Lösningen heter ssh.
Jag har använt ssh för att ansluta till andra datorer och utföra administrativa åtgärder i ett terminalfönster, men ssh kan ju så mycket mer. Det är dessutom så mycket säkrare än Samba. Och varför skall man använda samba när både servern och klienten kör Linux (eller MacOS).
Exempel
Låt oss säga att det finns en server på nätverket som har en stor disk med resurser som jag vill dela via nätverket. Servern heter ”server” och sökvägen till den delade mappen är ”/share/”.
För det första så behöver man ha ett användarkonto på servern och i det här exemplet så har jag ett konto med namnet ”klakar” som har rättigheter att hantera innehållet i share-katalogen.
Normalt när man kopplar upp sig med ssh så ger man kommandot:
ssh klakar@server
Efter att man angett sitt lösenord så är man terminalansluten till servern i den angivna användarens hemmakatalog, och kan göra det vanliga med ssh, men det är inte det jag är ute efter.
För det första vill jag slippa att ange lösenord, men ha bibehållen säkerhet. Då behöver jag generera en nyckel.
I terminalen på min lokala dator (inte i en ssh session på servern) så ges nedanstående kommandon.
cd .ssh/ ssh-keygen -t rsa -b 4096 -C "Min Lokala Dator" -f lokal_dator_key
Detta genererar en privat nyckel med namnet ”lokal_dator_key” och en publik nyckel vid namn ”lokal_dator_key.pub”. Nyckeln är av typen RSA och har 4096 bitars kryptering. Jag har även lagt till en kommentar som bakas in i nyckeln för att hjälpa mig hålla reda på var nyckeln kommer ifrån.
Nyckeln genereras i den katalog man befinner sig i och därför så inleder jag med att gå till den dolda katalogen ”.ssh/” i min hemkatalog. Detta är standardkatalogen för att hantera nycklar med ssh. Man kan välja att lagra dessa på annan plats också, men mina instruktioner här utgår från att det är här nycklarna finns.
Det finns andra sätt att generera nycklar men det här är ett skapligt bra alternativ.
För att kunna använda nyckeln i stället för lösenord så måste jag bekräfta min publika nyckel på servern, vilket också kopierar den dit. Den privata nyckeln skall man däremot vara väldigt restriktiv med hur man sprider.
ssh-copy-id klakar@server
Med ovanstående kommando så får man åter ange sitt lösenord, men vid nästa uppkoppling med ssh från den här datorn mot servern så kommer nyckeln att användas i stället.
Vill du kontrollera vilka publika nycklar som finns på servern så finns dessa i en textfil på sökvägen (på servern):
.ssh/authorized_keys
Vill man ta bort en publik nyckel från servern så är det bara att radera den i denna fil och starta om ssh tjänsten.
Koppla upp katalogen ”/share/”
Ssh finns som standard i så gott som alla *nix system, men för att ansluta kataloger via ssh så kan man behöva installera ett extra program:
sudo apt install sshfs
Programmet sshfs gör att man kan montera sökvägar från andra datorer på den lokala datorn, via ssh. Jag vill montera den delade katalogen ”/share/” från servern i min hemkatalog som ”/home/klakar/share/”:
mkdir /home/klakar/share/ sshfs klakar@server:/share/ /home/klakar/share/
För att montera något så behöver man en ”monteringspunkt” vilket kommandot mkdir löser. Sedan är det sshfs kommandot som monterar fjärrsökvägen på servern i denna katalog. Allt på servern i katalogen ”/share/” ser nu ut att ligga på den lokala sökvägen ”/home/klakar/share/”.
Gör uppkopplingen permanent
Nu är den här kopplingen något tillfällig, vilket inte är vad jag önskar. För att göra den permanent så behöver jag göra två saker.
För det första så behöver jag tala om för ssh att inte anslutningen skall kopplas ned vid inaktivitet. Det görs i filen ”/etc/ssh/ssh_config” där en rad läggs till sist i filen:
ServerAliveInterval 120
Detta innebär att datorn talar om för servern att den fortfarande vill vara ansluten var 120:e sekund.
I de flesta Linuxbaserade distributioner så finns det en funktion för att ”starta program” vid uppstart. Här kan man ange ett kommando i stället för att peka på ett program. Här är det bara att ange det sshfs kommando som använts här ovan.
Varje gång jag startar datorn så kommer katalogen på servern att monteras på den angivna sökvägen lokalt. I min filhanterare så kan jag öppna och visa innehållet på sökvägen precis som om det vore en lokal katalog. Det kan även vara så att monteringspunkten visas som en separat sökväg också i filhanteraren.
Om man har många sökvägar man vill ansluta så kan man skriva ett skript för det och sedan anropa skriptet i stället på samma sätt.
Det skall gå att göra ändringen i ”fstab” också, men det är tydligen lite krångligt att få till att fungera. Den metod som jag beskriver ovan fungerar för mig och den känns snabb och säker.
Så länge det finns ssh på servern så är detta ett betydligt mycket bättre sätt att koppla upp delade kataloger till Linuxklienter. Jag har sedan inte provat att göra samma sak på en MacOS klient, men rent teoretiskt så borde det fungera där med.
Jag är däremot fortfarande lite avundsjuk på AD i Windows…
LDAP kan göra i princip allt som AD gör. Men någon borde hjälpa alla småföretag med ett mycket enkelt webbaserat GUI för LDAP både serversidan och klientsidan (Win/Mac/Lin). Då kunde många lämna MS till förmån för en öppen standard.
Det skulle gynna alla.
phpldapadmin är väl OK och man sätter ju upp det på 10 minuter men det är inte enkelt nog för att Bosses Rör med 10 anställda ska lämna byta ut sin trygga MS miniserver mot en Debian burk.
Men i sinom tid blir det nog bra får vi hoppas.
LDAP är helt riktigt en del av AD. Den som handlar om att sprida databaser som /etc/hosts /etc/passwd etc. Men det är bara en av tre.
Den andra delen av AD är Kerberos, som handlar om Single Sign On, dvs en inloggning på alla maskiner som tillhör rätt domän. Varje maskin och tjänst har även ett lösenord, så att både klient och server behöver loggas in. Men med SSO så behövs det bara en gång. Det är rätt bra, ger exempelvis login till webbsidor utan att behöva ange lösenord. Eller SSH utan lösenord.
Tredje delen är att distribuera filer, program och data, med SMB (eller CIF som det även kallas).
I linux-maskiner (och Apple OSX) så använder man LDAP och Kerberos, men NFS istället för SMB. Då finns paketet autofs för att automatiskt montera en NFS-katalog som en server delar ut. När man installerat och konfigurerat autofs för att tillåta NFS-montering, så är det enkelt.
cd /net/server.local/ext/katalog
Om NFS-katalogen /ext/katalog inte är moterad från servern server.local, så kommer autofs att göra det automatiskt. Och om den inte används på ett tag, så avmonteras den.
Kataloger exporteras från nfs genom att angers i /etc/exports i servern, som har installerat nfs-server-paketet.
Tom bättre än ssh ;-)=
Hur är det med NFS och kryptering? SSH krypterar överföringen men blir även lite långsammare än NFS. Har hört att NFS 4.1 skall hantera kryptering men inte provat.
Hur är det med http://www.zentyal.org ? Det är ett gränssnitt på Ubuntu Server, så nästan Debian…
Det såg spännande ut till dess, vilket måste kollas upp, dom bara anger Win clienter som möjliga klienter. Bygger man en servermiljö i Linux tycker jag att man kan bemöda sig att det ska funka med Linux klienter också.
Jo, sshfs monterar bara när användaren loggar in. Om man har flera användare, så kommer den inte att vara montera när de andra loggar in i maskinen. Och om flera loggar in och monterar på samma punkt, så kommer den senaste monteringen att ”skriva över” och dölja de tidigare monteringarna.
Så ja, är man ensam så fungerar det utmärkt.
Användare monterar där de har skrivrättighet, d.v.s. /home/user/ och denna sökväg finns ju bara för respektive användare ändå.
Om en administratör på datorn vill lägga upp en montering som skall fungera för alla så får man göra på ett annat sätt.
Kanske ett sshfs kommando i /etc/skel/.bash? En ”gemensam” privat nyckel skulle också kunna läggas där?