SSHFS: verschil tussen versies
(Nieuwe pagina aangemaakt met ' '''Mount netwerkmappen met SSHFS in je thuisnetwerk''' SSHFS is een subsysteem van SSH. De functie van SSHFS is om mappen van ssh servers als netwerkmappen te mou...') |
k (→Installatie) |
||
(22 tussenliggende versies door 2 gebruikers niet weergegeven) | |||
Regel 1: | Regel 1: | ||
+ | '''Mount netwerkmappen met SSHFS''' in je thuisnetwerk | ||
− | + | SSHFS is een subsysteem van SSH. De functie van SSHFS is om mappen van een ssh server als netwerkmappen te mounten aan het filesysteem van een client computer. Dat kan via de opdrachtregel en via fstab. | |
− | |||
− | SSHFS is een subsysteem van SSH. De functie van SSHFS is om mappen van ssh | ||
− | |||
==Inleiding== | ==Inleiding== | ||
− | |||
Als je [[SSH]] heb geïnstalleerd op een computer in je thuisnetwerk en op de clients passwordless login hebt gerealiseerd is het nog maar een paar stapjes om mappen van de server op de client mounten. | Als je [[SSH]] heb geïnstalleerd op een computer in je thuisnetwerk en op de clients passwordless login hebt gerealiseerd is het nog maar een paar stapjes om mappen van de server op de client mounten. | ||
Het is minder werk dan NFS en je hebt een versleutelde verbinding in tegenstelling tot NFS wat niet versleuteld is. Door de encryptie is de overdrachtsnelheid wel wat lager. Op mijn eigen netwerk haal ik ongeveer 80-100MB/s met SFTP en met [[FTP]] om ik tot ruim 115MB/s, maar daar zit ik ook wel eens rond de 70 of 80MB/s. | Het is minder werk dan NFS en je hebt een versleutelde verbinding in tegenstelling tot NFS wat niet versleuteld is. Door de encryptie is de overdrachtsnelheid wel wat lager. Op mijn eigen netwerk haal ik ongeveer 80-100MB/s met SFTP en met [[FTP]] om ik tot ruim 115MB/s, maar daar zit ik ook wel eens rond de 70 of 80MB/s. | ||
Snelheid is belangrijk, maar gebruiksgemak in dagelijks gebruik is ook belangrijk. Als je de mappen van de server kunt benaderen alsof het een extra schijf is op je eigen computer is dat heel gemakkelijk. | Snelheid is belangrijk, maar gebruiksgemak in dagelijks gebruik is ook belangrijk. Als je de mappen van de server kunt benaderen alsof het een extra schijf is op je eigen computer is dat heel gemakkelijk. | ||
− | + | Maar als je regelmatig veel en grote bestanden overzet zoals foto's en video's wordt snelheid belangrijker. Dan kun je beter [[FTP]] gebruiken. Mobiele apparaten zoals smartphones hebben ook niet de mogelijkheid om mappen te mounten, maar verbinden via FTP of SFTP kunnen ze meestal wel. | |
− | Daarom moet je eigenlijk meerdere verbindingen hebben tussen je | + | Daarom moet je eigenlijk meerdere verbindingen hebben tussen je apparatuur zodat je voor elke toepassing de beste verbinding kunt selecteren. |
− | |||
==Installatie== | ==Installatie== | ||
− | |||
Voor het mounten van mappen op een client hoef je op de server niets te doen. Op de client moet je '''SSHFS''' installeren en dat kun je gewoon via Programmabeheer doen. Als je persé via de terminal wil werken kun je het installeren met | Voor het mounten van mappen op een client hoef je op de server niets te doen. Op de client moet je '''SSHFS''' installeren en dat kun je gewoon via Programmabeheer doen. Als je persé via de terminal wil werken kun je het installeren met | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
sudo apt install sshfs | sudo apt install sshfs | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | Daarna moet je op de client computer in het bestand '''/etc/ssh/ssh_config''' de volgende waarde toevoegen | ||
+ | <syntaxhighlight lang="bash"> | ||
+ | ConnectTimeout 5 | ||
+ | </syntaxhighlight> | ||
+ | Hierdoor wordt maximaal 5 seconden geprobeerd verbinding te maken met de server. Dit voorkomt dat het client systeem blokkeert als de server offline is. Je hebt root bevoegdheden nodig om dit bestand te kunnen bewerken. | ||
+ | |||
Vervolgens moet je een mount point op de client computer maken. Dat is de map waar de map van de server aan verbonden wordt. | Vervolgens moet je een mount point op de client computer maken. Dat is de map waar de map van de server aan verbonden wordt. | ||
Als de ssh server bijvoorbeeld popeye heet kun je in de home directory een map popeye maken. | Als de ssh server bijvoorbeeld popeye heet kun je in de home directory een map popeye maken. | ||
Regel 44: | Regel 45: | ||
findmnt hebben we toch wel nodig omdat je in een script moet kunnen controleren of de verbinding nog actief is. Anders moet die worden hersteld. | findmnt hebben we toch wel nodig omdat je in een script moet kunnen controleren of de verbinding nog actief is. Anders moet die worden hersteld. | ||
SSH verbreekt namelijk na verloop van tijd de verbinding dus dan moet je die opnieuw tot stand brengen. Dat is natuurlijk niet iets wat je iedere keer met de hand wil doen. Daarom geef ik verderop een paar scripts waarmee dat automatisch wordt geregeld. | SSH verbreekt namelijk na verloop van tijd de verbinding dus dan moet je die opnieuw tot stand brengen. Dat is natuurlijk niet iets wat je iedere keer met de hand wil doen. Daarom geef ik verderop een paar scripts waarmee dat automatisch wordt geregeld. | ||
− | |||
==Permanente mount via fstab== | ==Permanente mount via fstab== | ||
− | + | Je kunt mappen van de ssh server ook via '''/etc/fstab''' mounten, dan heb je een permanente verbinding. Met de juiste opties hoef je dan niet de verbinding te herstellen als de computer ontwaakt uit de slaapstand. | |
− | Je kunt mappen van de ssh server ook via | ||
Mounten via '''/etc/fstab''' gaat met de regel | Mounten via '''/etc/fstab''' gaat met de regel | ||
Regel 54: | Regel 53: | ||
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,reconnect,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0 | USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,reconnect,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Bij de hoofdletters moet je je eigen gegevens gebruiken. Voor hostname kun je niet zomaar de naam van de host gebruiken (popeye) omdat bij het opstarten van de computer in het '''known_hosts''' bestand van root wordt gekeken welk ip-adres daar bij hoort. Dan zou je eerst als root met de ssh server verbinding moeten hebben gemaakt. | + | Bij de hoofdletters moet je je eigen gegevens gebruiken. Voor hostname kun je niet zomaar de naam van de host gebruiken (popeye) omdat bij het opstarten van de computer in het '''known_hosts''' bestand van root wordt gekeken welk ip-adres daar bij hoort. Dan zou je eerst als root met de ssh server verbinding moeten hebben gemaakt.<br /> |
Ik raad je af om je eigen known_hosts bestand over dat van root heen te kopiëren want dat is typisch een actie van de categorie hoe-help-ik-mijn-systeem-om-zeep. Je weet niet wat voor een kettingreactie dat veroorzaakt en voor je het weet kan je je hele systeem opnieuw installeren als je geen TimeShift gebruikt. | Ik raad je af om je eigen known_hosts bestand over dat van root heen te kopiëren want dat is typisch een actie van de categorie hoe-help-ik-mijn-systeem-om-zeep. Je weet niet wat voor een kettingreactie dat veroorzaakt en voor je het weet kan je je hele systeem opnieuw installeren als je geen TimeShift gebruikt. | ||
Regel 61: | Regel 60: | ||
mogenblue@192.168.1.17:/home/mogenblue /home/popeye fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/mogenblue/.ssh/id_rsa,allow_other,reconnect,default_permissions,uid=1000,gid=1000 0 0 | mogenblue@192.168.1.17:/home/mogenblue /home/popeye fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/mogenblue/.ssh/id_rsa,allow_other,reconnect,default_permissions,uid=1000,gid=1000 0 0 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Je gebruikt dus het ip-adres van de host en door de identityfile te specificeren, met het volledige pad naar het id_rsa bestand, kun je het systeem zonder password de map laten mounten.<br /> | + | Je gebruikt dus het ip-adres van de host en door de identityfile te specificeren, met het volledige pad naar het '''id_rsa''' bestand, kun je het systeem zonder password de map laten mounten.<br /> |
− | De optie _netdev zorgt ervoor dat gewacht wordt met verbinden totdat het netwerk actief is.<br /> | + | De optie '''_netdev''' zorgt ervoor dat gewacht wordt met verbinden totdat het netwerk actief is.<br /> |
− | Door de optie reconnect wordt de verbinding automatisch hersteld bij ontwaken uit de slaapstand.<br /> | + | De optie '''ConnectTimeout=5''' zorgt dat het systeem stopt met verbinding maken als de server na 5 seconden geen antwoord heeft gegeven.<br /> |
− | Voor uid en gid moet je je eigen id's gebruiken, maar als je de enige gebruiker bent op je computer is dat meestal hetzelfde. | + | Door de optie '''reconnect''' wordt de verbinding automatisch hersteld bij ontwaken uit de slaapstand.<br /> |
− | + | Voor '''uid''' en '''gid''' moet je je eigen id's gebruiken, maar als je de enige gebruiker bent op je computer is dat meestal hetzelfde. | |
==Mounten via de opdrachtregel== | ==Mounten via de opdrachtregel== | ||
− | |||
Het mounten via de opdrachtregel gaat met de opdracht | Het mounten via de opdrachtregel gaat met de opdracht | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
Regel 80: | Regel 78: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Met '''findmnt''' kun je zien of de map | + | Met '''findmnt''' kun je zien of de map gemount via de opdrachtregel of via fstab. Het verschil zit hem in de hostname of ip adres en de user en groep id. Bij de opdrachtregel zijn die 1000, bij permanent zijn ze 0.<br /> |
Bij de opdrachtregel zie je de hostname, bij fstab zie je het ip adres. | Bij de opdrachtregel zie je de hostname, bij fstab zie je het ip adres. | ||
Regel 92: | Regel 90: | ||
/home/popeye mogenblue@192.168.1.17:/home/mogenblue fuse.sshfs rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other | /home/popeye mogenblue@192.168.1.17:/home/mogenblue fuse.sshfs rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Je ziet hier het ip adres en de user en group id zijn 0. | + | Je ziet hier het ip adres van de host en de user en group id zijn 0. |
Als de netwerkmap via de opdrachtregel is gemount met sshfs ziet de uitvoer er zo uit | Als de netwerkmap via de opdrachtregel is gemount met sshfs ziet de uitvoer er zo uit | ||
Regel 99: | Regel 97: | ||
/home/popeye mogenblue@popeye:/home/mogenblue fuse.sshfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 | /home/popeye mogenblue@popeye:/home/mogenblue fuse.sshfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | Hier zie je de hostname en de user en group id zijn allebei 1000. | + | Hier zie je de hostname van de host en de user en group id zijn allebei 1000. |
− | |||
==Scripts voor SSHFS== | ==Scripts voor SSHFS== | ||
− | |||
Dan nu een paar scripts voor de automatisering van de verbinding via de opdrachtregel. | Dan nu een paar scripts voor de automatisering van de verbinding via de opdrachtregel. | ||
Regel 116: | Regel 112: | ||
# naam van de ssh server in het .ssh/config bestand | # naam van de ssh server in het .ssh/config bestand | ||
Host='popeye' | Host='popeye' | ||
− | |||
echo . | echo . | ||
Regel 122: | Regel 117: | ||
echo . | echo . | ||
echo . | echo . | ||
− | |||
# te mounten map op de ssh server | # te mounten map op de ssh server | ||
Regel 145: | Regel 139: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Je hoeft alleen in de variabelen je eigen gegevens in te vullen. | Je hoeft alleen in de variabelen je eigen gegevens in te vullen. | ||
− | |||
Het volgende script test of de map gemount is. Dit script heet '''testmount.sh'''. Je kunt een snelstarter op je buroblad zetten naar dit script om het binnen handbereik te hebben. | Het volgende script test of de map gemount is. Dit script heet '''testmount.sh'''. Je kunt een snelstarter op je buroblad zetten naar dit script om het binnen handbereik te hebben. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
− | |||
echo . | echo . | ||
Regel 167: | Regel 159: | ||
Dit script moet je in een terminal laten uitvoeren. | Dit script moet je in een terminal laten uitvoeren. | ||
Als de map niet gemount is geeft findmnt geen output. Als de map wel gemount is ziet het eruit zoals hierboven al getoond is. | Als de map niet gemount is geeft findmnt geen output. Als de map wel gemount is ziet het eruit zoals hierboven al getoond is. | ||
− | |||
Het volgende script kun je gebruiken om een netwerkmap te unmounten. Het heet '''sshfs-unmount.sh'''. | Het volgende script kun je gebruiken om een netwerkmap te unmounten. Het heet '''sshfs-unmount.sh'''. | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
#!/bin/bash | #!/bin/bash | ||
− | |||
echo . | echo . | ||
Regel 178: | Regel 168: | ||
echo . | echo . | ||
echo . | echo . | ||
− | |||
# lokale map op de client computer waar de remote map aan verbonden wordt | # lokale map op de client computer waar de remote map aan verbonden wordt | ||
Regel 198: | Regel 187: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | De essentiële regel in dit script is | + | De essentiële regel in dit script is<br /> |
− | + | ;sudo umount $LocalMap | |
Je moet het dus in een terminal laten uitvoeren omdat je voor unmounten je wachtwoord moet invoeren. Als je een mount aanmaakt hoeft dat niet, maar bij het verbreken wel. | Je moet het dus in een terminal laten uitvoeren omdat je voor unmounten je wachtwoord moet invoeren. Als je een mount aanmaakt hoeft dat niet, maar bij het verbreken wel. | ||
− | |||
==Automatisch verbinden met scripts== | ==Automatisch verbinden met scripts== | ||
− | |||
We gaan nog een stapje verder om te zorgen dat de map automatisch gemount wordt zodra de computer uit de slaapstand komt of wordt opgestart. | We gaan nog een stapje verder om te zorgen dat de map automatisch gemount wordt zodra de computer uit de slaapstand komt of wordt opgestart. | ||
De netwerkmap kan pas gemount worden zodra het netwerk up is. Daarom zetten we een simpel script in de map '''/etc/network/if-up.d'''.<br /> | De netwerkmap kan pas gemount worden zodra het netwerk up is. Daarom zetten we een simpel script in de map '''/etc/network/if-up.d'''.<br /> | ||
Regel 215: | Regel 202: | ||
# van de ssh client | # van de ssh client | ||
# het wordt uitgevoerd zodra het netwerk up is | # het wordt uitgevoerd zodra het netwerk up is | ||
− | |||
− | |||
− | |||
# mount remote map via ssh | # mount remote map via ssh | ||
Regel 227: | Regel 211: | ||
Alle scripts moeten uitvoerbaar zijn. Voor mogenblue en popeye moet je je eigen gegevens invullen. | Alle scripts moeten uitvoerbaar zijn. Voor mogenblue en popeye moet je je eigen gegevens invullen. | ||
− | Je kunt je scripts organiseren in een scripts map in je werkmap, bijvoorbeeld '''home/mogenblue/scripts'''. | + | Je kunt je scripts organiseren in een scripts map in je werkmap, bijvoorbeeld '''/home/mogenblue/scripts'''. |
− | |||
− | |||
− | |||
+ | == Externe Links == | ||
:[https://linuxize.com/post/how-to-use-sshfs-to-mount-remote-directories-over-ssh/ How to use SSHFS to Mount Remote Directories over SSH] | :[https://linuxize.com/post/how-to-use-sshfs-to-mount-remote-directories-over-ssh/ How to use SSHFS to Mount Remote Directories over SSH] | ||
− | |||
:[https://wiki.archlinux.org/index.php/SSHFS SSHFS] | :[https://wiki.archlinux.org/index.php/SSHFS SSHFS] | ||
− | |||
:[https://superuser.com/questions/669287/automount-sshfs-using-fstab-without-mount-a Automount sshfs using fstab without mount -a] | :[https://superuser.com/questions/669287/automount-sshfs-using-fstab-without-mount-a Automount sshfs using fstab without mount -a] | ||
− | + | :[https://unix.stackexchange.com/questions/260960/timeout-when-initiating-a-sshfs-connection timeout when initiating a sshfs connection] | |
:[https://unix.stackexchange.com/questions/14143/what-is-a-better-way-to-deal-with-server-disconnects-of-sshfs-mounts What is a better way to deal with server disconnects of sshfs mounts?] | :[https://unix.stackexchange.com/questions/14143/what-is-a-better-way-to-deal-with-server-disconnects-of-sshfs-mounts What is a better way to deal with server disconnects of sshfs mounts?] | ||
+ | :[https://stackoverflow.com/questions/19971811/sshfs-as-regular-user-through-fstab Sshfs as regular user through fstab] | ||
− | + | [[Categorie:Internet]] |
Huidige versie van 27 apr 2021 om 15:49
Mount netwerkmappen met SSHFS in je thuisnetwerk
SSHFS is een subsysteem van SSH. De functie van SSHFS is om mappen van een ssh server als netwerkmappen te mounten aan het filesysteem van een client computer. Dat kan via de opdrachtregel en via fstab.
Inhoud
Inleiding
Als je SSH heb geïnstalleerd op een computer in je thuisnetwerk en op de clients passwordless login hebt gerealiseerd is het nog maar een paar stapjes om mappen van de server op de client mounten. Het is minder werk dan NFS en je hebt een versleutelde verbinding in tegenstelling tot NFS wat niet versleuteld is. Door de encryptie is de overdrachtsnelheid wel wat lager. Op mijn eigen netwerk haal ik ongeveer 80-100MB/s met SFTP en met FTP om ik tot ruim 115MB/s, maar daar zit ik ook wel eens rond de 70 of 80MB/s.
Snelheid is belangrijk, maar gebruiksgemak in dagelijks gebruik is ook belangrijk. Als je de mappen van de server kunt benaderen alsof het een extra schijf is op je eigen computer is dat heel gemakkelijk. Maar als je regelmatig veel en grote bestanden overzet zoals foto's en video's wordt snelheid belangrijker. Dan kun je beter FTP gebruiken. Mobiele apparaten zoals smartphones hebben ook niet de mogelijkheid om mappen te mounten, maar verbinden via FTP of SFTP kunnen ze meestal wel. Daarom moet je eigenlijk meerdere verbindingen hebben tussen je apparatuur zodat je voor elke toepassing de beste verbinding kunt selecteren.
Installatie
Voor het mounten van mappen op een client hoef je op de server niets te doen. Op de client moet je SSHFS installeren en dat kun je gewoon via Programmabeheer doen. Als je persé via de terminal wil werken kun je het installeren met
sudo apt install sshfs
Daarna moet je op de client computer in het bestand /etc/ssh/ssh_config de volgende waarde toevoegen
ConnectTimeout 5
Hierdoor wordt maximaal 5 seconden geprobeerd verbinding te maken met de server. Dit voorkomt dat het client systeem blokkeert als de server offline is. Je hebt root bevoegdheden nodig om dit bestand te kunnen bewerken.
Vervolgens moet je een mount point op de client computer maken. Dat is de map waar de map van de server aan verbonden wordt. Als de ssh server bijvoorbeeld popeye heet kun je in de home directory een map popeye maken. Dat kun je in een terminal doen met
mkdir popeye
maar je kan ook gewoon in je bestandsbeheerder Nemo blijven en daar de map aanmaken. Let er op dat je zelf de eigenaar bent van die map en niet root. Anders kun je er straks niet bij.
Daarna kun je bijvoorbeeld de hele werkmap die je op de server hebt mounten op de client. En daar heb je wél de terminal voor nodig. Dat doe je met
sshfs mogenblue@popeye:/home/mogenblue /home/popeye
Voor mogenblue moet je dan je eigen username gebruiken.
Dat is em. Meer is het niet. Je kunt de verbinding in een terminal controleren met
findmnt /home/popeye
Maar het is natuurlijk logischer om in je bestandsbeheerder te kijken of er iets te vinden is.
findmnt hebben we toch wel nodig omdat je in een script moet kunnen controleren of de verbinding nog actief is. Anders moet die worden hersteld. SSH verbreekt namelijk na verloop van tijd de verbinding dus dan moet je die opnieuw tot stand brengen. Dat is natuurlijk niet iets wat je iedere keer met de hand wil doen. Daarom geef ik verderop een paar scripts waarmee dat automatisch wordt geregeld.
Permanente mount via fstab
Je kunt mappen van de ssh server ook via /etc/fstab mounten, dan heb je een permanente verbinding. Met de juiste opties hoef je dan niet de verbinding te herstellen als de computer ontwaakt uit de slaapstand.
Mounten via /etc/fstab gaat met de regel
USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/USERNAME/.ssh/id_rsa,allow_other,reconnect,default_permissions,uid=USER_ID_N,gid=USER_GID_N 0 0
Bij de hoofdletters moet je je eigen gegevens gebruiken. Voor hostname kun je niet zomaar de naam van de host gebruiken (popeye) omdat bij het opstarten van de computer in het known_hosts bestand van root wordt gekeken welk ip-adres daar bij hoort. Dan zou je eerst als root met de ssh server verbinding moeten hebben gemaakt.
Ik raad je af om je eigen known_hosts bestand over dat van root heen te kopiëren want dat is typisch een actie van de categorie hoe-help-ik-mijn-systeem-om-zeep. Je weet niet wat voor een kettingreactie dat veroorzaakt en voor je het weet kan je je hele systeem opnieuw installeren als je geen TimeShift gebruikt.
In de voorbeeld situatie ziet de fstab entry er zo uit:
mogenblue@192.168.1.17:/home/mogenblue /home/popeye fuse.sshfs _netdev,user,idmap=user,transform_symlinks,identityfile=/home/mogenblue/.ssh/id_rsa,allow_other,reconnect,default_permissions,uid=1000,gid=1000 0 0
Je gebruikt dus het ip-adres van de host en door de identityfile te specificeren, met het volledige pad naar het id_rsa bestand, kun je het systeem zonder password de map laten mounten.
De optie _netdev zorgt ervoor dat gewacht wordt met verbinden totdat het netwerk actief is.
De optie ConnectTimeout=5 zorgt dat het systeem stopt met verbinding maken als de server na 5 seconden geen antwoord heeft gegeven.
Door de optie reconnect wordt de verbinding automatisch hersteld bij ontwaken uit de slaapstand.
Voor uid en gid moet je je eigen id's gebruiken, maar als je de enige gebruiker bent op je computer is dat meestal hetzelfde.
Mounten via de opdrachtregel
Het mounten via de opdrachtregel gaat met de opdracht
sshfs USERNAME@HOSTNAME_OR_IP:/REMOTE/DIRECTORY /LOCAL/MOUNTPOINT
Bij de hoofdletters gebruik je je eigen gegevens. Met deze methode kun je wel de naam van de host gebruiken omdat je zelf de verbinding tot stand brengt. Het systeem zal in je known_hosts bestand kijken welk ip-adres bij de hostnaam hoort.
In de voorbeeld situatie kan je verbinding maken met de volgende regel
sshfs mogenblue@popeye:/home/mogenblue /home/popeye
Met findmnt kun je zien of de map gemount via de opdrachtregel of via fstab. Het verschil zit hem in de hostname of ip adres en de user en groep id. Bij de opdrachtregel zijn die 1000, bij permanent zijn ze 0.
Bij de opdrachtregel zie je de hostname, bij fstab zie je het ip adres.
Met de opdracht
findmnt /home/popeye
ziet de uitvoer er ongeveer zo uit als de map via fstab is gemount
TARGET SOURCE FSTYPE OPTIONS
/home/popeye mogenblue@192.168.1.17:/home/mogenblue fuse.sshfs rw,nosuid,nodev,noexec,relatime,user_id=0,group_id=0,default_permissions,allow_other
Je ziet hier het ip adres van de host en de user en group id zijn 0.
Als de netwerkmap via de opdrachtregel is gemount met sshfs ziet de uitvoer er zo uit
TARGET SOURCE FSTYPE OPTIONS
/home/popeye mogenblue@popeye:/home/mogenblue fuse.sshfs rw,nosuid,nodev,relatime,user_id=1000,group_id=1000
Hier zie je de hostname van de host en de user en group id zijn allebei 1000.
Scripts voor SSHFS
Dan nu een paar scripts voor de automatisering van de verbinding via de opdrachtregel.
Je moet dus eenmaal handmatig de mount directory op je computer aanmaken. Daarna kun je de verbinding automatisch via deze scripts tot stand brengen en in stand houden.
Het eerste script heet sshfs-mount.sh en hiermee maak je de mount en herstel je die als de mount verbroken is.
#!/bin/bash
# username op de ssh server
User='mogenblue'
# naam van de ssh server in het .ssh/config bestand
Host='popeye'
echo .
echo .
echo .
echo .
# te mounten map op de ssh server
RemoteMap='/home/mogenblue'
# lokale map op de client computer waar de remote map aan verbonden wordt
LocalMap='/home/popeye'
# test of de remote map is gemount
MapMounted="$( findmnt $LocalMap )"
if [ -z "$MapMounted" ]
then
echo "$LocalMap wordt gemount"
# mount netwerk map via sshfs
sshfs $User@$Host:$RemoteMap $LocalMap -o reconnect
echo .
echo "Output findmnt $LocalMap:"
else
echo "$LocalMap is gemount"
fi
findmnt $LocalMap
Je hoeft alleen in de variabelen je eigen gegevens in te vullen.
Het volgende script test of de map gemount is. Dit script heet testmount.sh. Je kunt een snelstarter op je buroblad zetten naar dit script om het binnen handbereik te hebben.
#!/bin/bash
echo .
echo .
echo .
echo .
# lokale map op de client computer waar de remote map aan verbonden wordt
LocalMap='/home/popeye'
echo "Output findmnt $LocalMap:"
findmnt $LocalMap
echo .
Dit script moet je in een terminal laten uitvoeren. Als de map niet gemount is geeft findmnt geen output. Als de map wel gemount is ziet het eruit zoals hierboven al getoond is.
Het volgende script kun je gebruiken om een netwerkmap te unmounten. Het heet sshfs-unmount.sh.
#!/bin/bash
echo .
echo .
echo .
echo .
# lokale map op de client computer waar de remote map aan verbonden wordt
LocalMap='/home/popeye'
MapMounted="$( findmnt $LocalMap )"
if [ -z "$MapMounted" ]
then
echo "$LocalMap is niet gemount"
else
echo "mount $LocalMap wordt verbroken"
# unmount netwerk mappen via sshfs
sudo umount $LocalMap
echo .
MapMounted="$( findmnt $LocalMap )"
echo "Output findmnt $LocalMap:"
echo $MapMounted
fi
De essentiële regel in dit script is
- sudo umount $LocalMap
Je moet het dus in een terminal laten uitvoeren omdat je voor unmounten je wachtwoord moet invoeren. Als je een mount aanmaakt hoeft dat niet, maar bij het verbreken wel.
Automatisch verbinden met scripts
We gaan nog een stapje verder om te zorgen dat de map automatisch gemount wordt zodra de computer uit de slaapstand komt of wordt opgestart.
De netwerkmap kan pas gemount worden zodra het netwerk up is. Daarom zetten we een simpel script in de map /etc/network/if-up.d.
Dit script heet computer-network-up-run en er staat maar één opdracht in:
#!/bin/sh
# dit bestand hoort in de map
# /etc/network/if-up.d
# van de ssh client
# het wordt uitgevoerd zodra het netwerk up is
# mount remote map via ssh
sudo -u mogenblue /home/mogenblue/Scripts/sshfs-mount.sh
De eigenaar van dit script is root. Controleer dit en pas dit zonodig aan. Dit script roept het mount script aan zodra het netwerk up is. Dat moet worden uitgevoerd als user mogenblue omdat het systeem dan het .ssh/config bestand van mogenblue zal raadplegen voor het ip adres dat hoort bij host popeye.
Alle scripts moeten uitvoerbaar zijn. Voor mogenblue en popeye moet je je eigen gegevens invullen. Je kunt je scripts organiseren in een scripts map in je werkmap, bijvoorbeeld /home/mogenblue/scripts.