SSH: verschil tussen versies

Uit LinuxMintNL WiKi
Ga naar: navigatie, zoeken
(Verbinding maken met de ssh server)
(edit + link naar ref + cat)
Regel 1: Regel 1:
 
=SSH=
 
 
 
 
'''File-sharing en synchronisatie via SSH''' in je thuisnetwerk
 
'''File-sharing en synchronisatie via SSH''' in je thuisnetwerk
 
  
 
'''SSH''' staat voor secure shell. Het is een netwerkprotocol dat gebruik maakt van een beveiligde verbinding. Elke uitwisseling van gegevens tussen twee computers is versleuteld.
 
'''SSH''' staat voor secure shell. Het is een netwerkprotocol dat gebruik maakt van een beveiligde verbinding. Elke uitwisseling van gegevens tussen twee computers is versleuteld.
 
'''SSH''' is gebaseerd op het client server model. Een server verleent toegang aan een client.
 
'''SSH''' is gebaseerd op het client server model. Een server verleent toegang aan een client.
 
Met ssh kun je onder meer veilig bestanden delen en overzetten via '''SFTP'''. En dat is het onderwerp van dit artikel.
 
Met ssh kun je onder meer veilig bestanden delen en overzetten via '''SFTP'''. En dat is het onderwerp van dit artikel.
 
 
__TOC__
 
 
  
 
===Inleiding===
 
===Inleiding===
Regel 21: Regel 12:
 
* hoe je bestanden op de server vanaf een smartphone of tablet kan gebruiken
 
* hoe je bestanden op de server vanaf een smartphone of tablet kan gebruiken
 
* en hoe je hele mappen synchroniseert tussen twee computers.
 
* en hoe je hele mappen synchroniseert tussen twee computers.
 
  
 
Ik begin met een korte uitleg over het opzetten van je netwerk: apparatuur en bekabeling, <br />
 
Ik begin met een korte uitleg over het opzetten van je netwerk: apparatuur en bekabeling, <br />
Regel 32: Regel 22:
 
===Netwerk===
 
===Netwerk===
 
Om te beginnen kan het wenselijk zijn om je netwerk met een draadloze router uit te breiden omdat er steeds meer apparaten bijkomen. Voor het uitbreiden van je netwerk is een switch het meest aangewezen apparaat qua kostprijs en eenvoud, maar voor draadloze apparaten of om het bereik van je draadloze netwerk uit te breiden heb je toch wel een router nodig.
 
Om te beginnen kan het wenselijk zijn om je netwerk met een draadloze router uit te breiden omdat er steeds meer apparaten bijkomen. Voor het uitbreiden van je netwerk is een switch het meest aangewezen apparaat qua kostprijs en eenvoud, maar voor draadloze apparaten of om het bereik van je draadloze netwerk uit te breiden heb je toch wel een router nodig.
Op WikiHow staat een heel goed artikel hoe je een router aan je netwerk moet toevoegen zodat de computers en mobiele apparatuur allemaal voor elkaar zichtbaar blijven:
+
Op WikiHow staat een heel goed artikel<ref>[https://www.wikihow.com/Cascade-Routers How to Cascade Routers]</ref> hoe je een router aan je netwerk moet toevoegen zodat de computers en mobiele apparatuur allemaal voor elkaar zichtbaar blijven:
 
 
[https://www.wikihow.com/Cascade-Routers How to Cascade Routers]
 
  
 
De clou is dat je op de hulp router eerst de dhcp server uitschakelt en vervolgens niet de wan poort maar een lan poort gebruikt om naar de hoofdrouter te verbinden. Als je de dhcp server niet uitschakelt interfereert die met die van de hoofdrouter. Dan gaat je net op slot en kan je helemaal overnieuw beginnen.
 
De clou is dat je op de hulp router eerst de dhcp server uitschakelt en vervolgens niet de wan poort maar een lan poort gebruikt om naar de hoofdrouter te verbinden. Als je de dhcp server niet uitschakelt interfereert die met die van de hoofdrouter. Dan gaat je net op slot en kan je helemaal overnieuw beginnen.
Regel 40: Regel 28:
 
===Firewall===
 
===Firewall===
 
Om ssh op een computer te kunnen gebruiken moet je er voor zorgen dat de clients toegang hebben tot de computer waarop de ssh server draait.
 
Om ssh op een computer te kunnen gebruiken moet je er voor zorgen dat de clients toegang hebben tot de computer waarop de ssh server draait.
Dat betekent dat je de firewall van de ssh server moet aanpassen. Een heel handig hulpmiddel hiervoor is '''UFW'''.
+
Dat betekent dat je de firewall van de ssh server moet aanpassen. Een heel handig hulpmiddel hiervoor is '''UFW'''<ref>[https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server]</ref>
 
 
[https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server]
 
  
 
Met '''UFW''' is het heel eenvoudig om individuele ip adressen van de lokale apparatuur toegang te geven tot de server. Dat betekent wel dat je dan statische ip adressen in je netwerk moet hebben. Dat kun je allemaal in de router configureren samen met IP&MAC binding voor extra veiligheid.<br />
 
Met '''UFW''' is het heel eenvoudig om individuele ip adressen van de lokale apparatuur toegang te geven tot de server. Dat betekent wel dat je dan statische ip adressen in je netwerk moet hebben. Dat kun je allemaal in de router configureren samen met IP&MAC binding voor extra veiligheid.<br />
Regel 50: Regel 36:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
Meer is het niet.
 
Meer is het niet.
 
  
 
Het is sowieso aan te raden om statische adressen in je netwerk te gebruiken omdat het verbinding maken met de server daardoor eenvoudiger wordt. Dat gaat met behulp van het configuratiebestand wat verderop wordt uitgelegd.
 
Het is sowieso aan te raden om statische adressen in je netwerk te gebruiken omdat het verbinding maken met de server daardoor eenvoudiger wordt. Dat gaat met behulp van het configuratiebestand wat verderop wordt uitgelegd.
 
  
 
Alle apparaten die toegang moeten hebben tot je ssh server moeten door de firewall worden doorgelaten: computers, laptops, smartphones en tablets. Dus voor elk apparaat moet je een regel aanmaken. Je moet niet een reeks van ip-adressen toegang geven want dan zet je de firewall onnodig verder open. Je hoeft het maar één keer te doen.
 
Alle apparaten die toegang moeten hebben tot je ssh server moeten door de firewall worden doorgelaten: computers, laptops, smartphones en tablets. Dus voor elk apparaat moet je een regel aanmaken. Je moet niet een reeks van ip-adressen toegang geven want dan zet je de firewall onnodig verder open. Je hoeft het maar één keer te doen.
 
  
 
Als alternatief kun je voor ssh poort 22 openzetten. Dat doe je via de regel
 
Als alternatief kun je voor ssh poort 22 openzetten. Dat doe je via de regel
Regel 66: Regel 49:
 
Daarom gebruik ik dit niet in mijn eigen netwerk.
 
Daarom gebruik ik dit niet in mijn eigen netwerk.
  
=SSH server=
+
== SSH server ==
  
 
===Installatie===
 
===Installatie===
Regel 109: Regel 92:
 
Als je voor de eerste keer verbinding maakt wordt er gevraagd of je door wil gaan met verbinding maken. Antwoord met ja en druk op enter. Deze vraag verschijnt alleen de eerste keer omdat de server dan nog niet bekend is op je lokale machine. Een ECDSA vingerafdruk wordt nu toegevoegd en je bent verbonden met de ssh server. <br />
 
Als je voor de eerste keer verbinding maakt wordt er gevraagd of je door wil gaan met verbinding maken. Antwoord met ja en druk op enter. Deze vraag verschijnt alleen de eerste keer omdat de server dan nog niet bekend is op je lokale machine. Een ECDSA vingerafdruk wordt nu toegevoegd en je bent verbonden met de ssh server. <br />
 
Om de verbinding te verbreken type je exit in of sluit de terminal.
 
Om de verbinding te verbreken type je exit in of sluit de terminal.
 
  
 
Je kunt de bestanden op de server ook in je bestandsbeheerder (Nemo) benaderen. Dat gaat als volgt.<br />
 
Je kunt de bestanden op de server ook in je bestandsbeheerder (Nemo) benaderen. Dat gaat als volgt.<br />
Regel 135: Regel 117:
 
#maak een nieuw ssh sleutelpaar aan,  
 
#maak een nieuw ssh sleutelpaar aan,  
 
#kopieer de openbare sleutel naar de server.
 
#kopieer de openbare sleutel naar de server.
 
  
 
'''1)''' Je moet eerst controleren of je al een ssh sleutel op je machine hebt want je hoeft hem niet te overschrijven. Dat kun je als volgt controleren:<br />
 
'''1)''' Je moet eerst controleren of je al een ssh sleutel op je machine hebt want je hoeft hem niet te overschrijven. Dat kun je als volgt controleren:<br />
Regel 151: Regel 132:
 
;No such file or directory.
 
;No such file or directory.
 
Als je wel sleutels hebt kun je de volgende stap overslaan.
 
Als je wel sleutels hebt kun je de volgende stap overslaan.
 
  
 
'''2)''' Met de volgende opdracht kun je een nieuw sleutelpaar aanmaken van 4096 bit en je email-adres als commentaar:
 
'''2)''' Met de volgende opdracht kun je een nieuw sleutelpaar aanmaken van 4096 bit en je email-adres als commentaar:
Regel 166: Regel 146:
 
;/home/mogenblue/.ssh/id_rsa /home/mogenblue/.ssh/id_rsa.pub
 
;/home/mogenblue/.ssh/id_rsa /home/mogenblue/.ssh/id_rsa.pub
 
In plaats van mogenblue zie je dan je eigen username.
 
In plaats van mogenblue zie je dan je eigen username.
 
  
 
Let erop dat je in je home directory staat want met '''~/.ssh/.....''' kijkt het systeem naar de verborgen map '''.ssh''' vanaf de huidige map. De .ssh directory staat direct onder je home map, dus dan moet je daar staan om het systeem de map te laten vinden.
 
Let erop dat je in je home directory staat want met '''~/.ssh/.....''' kijkt het systeem naar de verborgen map '''.ssh''' vanaf de huidige map. De .ssh directory staat direct onder je home map, dus dan moet je daar staan om het systeem de map te laten vinden.
 
  
 
'''3)''' Om de sleutels te kunnen gebruiken moet je de openbare sleutel naar de server kopiëren. De makkelijkste manier daarvoor is met de ssh-copy-id opdracht
 
'''3)''' Om de sleutels te kunnen gebruiken moet je de openbare sleutel naar de server kopiëren. De makkelijkste manier daarvoor is met de ssh-copy-id opdracht
Regel 178: Regel 156:
 
Er wordt dan om het wachtwoord gevraagd. Type dat in en druk op enter.<br />
 
Er wordt dan om het wachtwoord gevraagd. Type dat in en druk op enter.<br />
 
Daarna wordt de openbare sleutel op de server toegevoegd aan het user authorized_keys bestand en wordt de verbinding gesloten.
 
Daarna wordt de openbare sleutel op de server toegevoegd aan het user authorized_keys bestand en wordt de verbinding gesloten.
 
  
 
Je kunt nu inloggen zonder je wachtwoord te hoeven invoeren.
 
Je kunt nu inloggen zonder je wachtwoord te hoeven invoeren.
Regel 193: Regel 170:
 
;/home/mogenblue/.ssh/config
 
;/home/mogenblue/.ssh/config
 
Het staat dus in een verborgen map dus je moet in je bestandsbeheerder de verborgen mappen en bestanden laten tonen.
 
Het staat dus in een verborgen map dus je moet in je bestandsbeheerder de verborgen mappen en bestanden laten tonen.
 
  
 
In dat bestand zet je bijvoorbeeld de volgende regels:
 
In dat bestand zet je bijvoorbeeld de volgende regels:
Regel 207: Regel 183:
 
</syntaxhighlight>
 
</syntaxhighlight>
 
meer niet. Zo simpel is het geworden.
 
meer niet. Zo simpel is het geworden.
 
  
 
Er zijn nog meer mogelijkheden met het ssh config bestand maar om met een eenvoudig thuisnetwerk te beginnen met 1 of 2 servers is dit wel genoeg. Om het simpel te houden.
 
Er zijn nog meer mogelijkheden met het ssh config bestand maar om met een eenvoudig thuisnetwerk te beginnen met 1 of 2 servers is dit wel genoeg. Om het simpel te houden.
  
=Verbindingen=
+
== Verbindingen ==
 
 
 
===Verbinden in de bestandsbeheerder===
 
===Verbinden in de bestandsbeheerder===
 
Nu kun je in je bestandsbeheerder eenvoudiger verbinding maken.<br />
 
Nu kun je in je bestandsbeheerder eenvoudiger verbinding maken.<br />
Regel 223: Regel 197:
 
Vervolgens verschijnt de mappenlijst van de server in beeld en kun je weer navigeren en kopiëren en plakken naar en van de server.<br />
 
Vervolgens verschijnt de mappenlijst van de server in beeld en kun je weer navigeren en kopiëren en plakken naar en van de server.<br />
 
Omdat je kunt inloggen zonder wachtwoord hoef je dat niet meer in te vullen. En het ip-adres en de username worden in het configuratiebestand opgezocht.
 
Omdat je kunt inloggen zonder wachtwoord hoef je dat niet meer in te vullen. En het ip-adres en de username worden in het configuratiebestand opgezocht.
 
  
 
Je kan nu ook in je bestandsbeheerder een bladwijzer aanmaken voor je map op de ssh server. Die verschijnt in de zijbalk aan de linkerkant. De verbinding met de server wordt om veiligheidsredenene automatisch na een bepaalde tijd verbroken. Maar je kunt gewoon op de bladwijzer klikken en dan wordt de verbinding automatisch hersteld.
 
Je kan nu ook in je bestandsbeheerder een bladwijzer aanmaken voor je map op de ssh server. Die verschijnt in de zijbalk aan de linkerkant. De verbinding met de server wordt om veiligheidsredenene automatisch na een bepaalde tijd verbroken. Maar je kunt gewoon op de bladwijzer klikken en dan wordt de verbinding automatisch hersteld.
Regel 231: Regel 204:
 
Je kunt normaal gesproken geen snelkoppeling van een netwerk map in een lokale map of op je buroblad zetten. Dat gaat via een omweg.<br />
 
Je kunt normaal gesproken geen snelkoppeling van een netwerk map in een lokale map of op je buroblad zetten. Dat gaat via een omweg.<br />
 
Je moet eerst een starter voor bestandsbeheer op je buroblad zetten en dan die starter het netwerkadres van de map op de server geven om mee te openen.  
 
Je moet eerst een starter voor bestandsbeheer op je buroblad zetten en dan die starter het netwerkadres van de map op de server geven om mee te openen.  
 
  
 
Dat gaat zo:<br />
 
Dat gaat zo:<br />
Regel 326: Regel 298:
 
   exit
 
   exit
 
fi
 
fi
 
  
 
echo '10'
 
echo '10'
Regel 351: Regel 322:
 
echo "# Synchroniseren Video's ... 6/6"
 
echo "# Synchroniseren Video's ... 6/6"
 
rsync $Opties "$Bron/Video's" ${User}@${Host}:$Doel
 
rsync $Opties "$Bron/Video's" ${User}@${Host}:$Doel
 
  
 
echo '100'
 
echo '100'
 
echo '# Synchronisatie voltooid.'
 
echo '# Synchronisatie voltooid.'
 
  
 
# minimaal 1 seconde tonen ter bevestiging van synchroniseren
 
# minimaal 1 seconde tonen ter bevestiging van synchroniseren
 
sleep 1
 
sleep 1
 
  
 
) |
 
) |
Regel 371: Regel 339:
  
 
Bovenaan in het script staan de variabelen waar je je eigen gegevens moet invullen: de naam van de verbinding, je username en het pad naar je eigen usermap op de lokale en de remote machine.
 
Bovenaan in het script staan de variabelen waar je je eigen gegevens moet invullen: de naam van de verbinding, je username en het pad naar je eigen usermap op de lokale en de remote machine.
 
  
 
Je kunt natuurlijk de mappen aanpassen die gesynchroniseerd moeten worden maar let er goed op dat je geen / teken aan het eind een map zet. Dat kan desastreuze gevolgen hebben voor je gegevens. Het kan vrijwel alle mappen op je lokale machine, inclusief het buroblad, verwijderen.
 
Je kunt natuurlijk de mappen aanpassen die gesynchroniseerd moeten worden maar let er goed op dat je geen / teken aan het eind een map zet. Dat kan desastreuze gevolgen hebben voor je gegevens. Het kan vrijwel alle mappen op je lokale machine, inclusief het buroblad, verwijderen.
Regel 421: Regel 388:
 
   exit
 
   exit
 
fi
 
fi
 
  
 
echo '10'
 
echo '10'
Regel 446: Regel 412:
 
echo "# Synchroniseren Video's ... 6/6"
 
echo "# Synchroniseren Video's ... 6/6"
 
rsync $Opties "${User}@${Host}:$Bron/Video's" $Doel
 
rsync $Opties "${User}@${Host}:$Bron/Video's" $Doel
 
  
 
echo '100'
 
echo '100'
 
echo '# Synchronisatie voltooid.'
 
echo '# Synchronisatie voltooid.'
 
  
 
# minimaal 1 seconde tonen ter bevestiging van synchroniseren
 
# minimaal 1 seconde tonen ter bevestiging van synchroniseren
 
sleep 3
 
sleep 3
 
  
 
) |
 
) |
Regel 472: Regel 435:
 
Ga naar de tab Rechten.<br />
 
Ga naar de tab Rechten.<br />
 
Zet een vinkje bij Uitvoeren: Toestaan dat bestand wordt uitgevoerd als programma.
 
Zet een vinkje bij Uitvoeren: Toestaan dat bestand wordt uitgevoerd als programma.
 
  
 
Met deze twee scripts kun je automatisch je lokale mappen synchroniseren met de mappen op de host machine.<br />
 
Met deze twee scripts kun je automatisch je lokale mappen synchroniseren met de mappen op de host machine.<br />
Regel 478: Regel 440:
 
Als er niet teveel veranderd is is het binnen 10-15 seconden gebeurd.
 
Als er niet teveel veranderd is is het binnen 10-15 seconden gebeurd.
  
 +
Voor de methoden om te synchroniseren heb ik al eerder een post gemaakt. <ref>[https://forum.linuxmintnl.nl/viewtopic.php?f=14&t=7001#p31481 Methoden voor synchronisatie]</ref>
  
Voor de methoden om te synchroniseren heb ik al eerder een post gemaakt. Die kun je hier doorlezen:
+
== Externe Links ==
 
+
:[https://www.wikihow.com/Cascade-Routers How to Cascade Routers]
[https://forum.linuxmintnl.nl/viewtopic.php?f=14&t=7001#p31481 Methoden voor synchronisatie]
+
:[https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server]
 
+
:[https://linuxize.com/post/how-to-enable-ssh-on-ubuntu-20-04/ How to Enable SSH on Ubuntu 20.04]
=Links=
+
:[https://linuxize.com/post/how-to-setup-passwordless-ssh-login/ How to Setup Passwordless SSH Login]
 
+
:[https://linuxize.com/post/using-the-ssh-config-file/#ssh-config-file-example Using the SSH Config File]
[https://www.wikihow.com/Cascade-Routers How to Cascade Routers]
+
:[https://www.mycomputertips.co.uk/77 Access FTP server using the Nemo File Manager in Linux Mint]
 
+
:[https://linuxize.com/post/how-to-transfer-files-with-rsync-over-ssh/ How to Transfer Files with Rsync over SSH]
[https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server]
+
:[https://stackoverflow.com/questions/1405324/how-to-create-a-bash-script-to-check-the-ssh-connection How to create a bash script to check the SSH connection?]
 
+
:[https://linoxide.com/bash-shell-script-show-dialog-box/ How to Show Dialog Box using Shell Script with Examples]
[https://linuxize.com/post/how-to-enable-ssh-on-ubuntu-20-04/ How to Enable SSH on Ubuntu 20.04]
+
:[https://help.gnome.org/users/zenity/3.24/progress.html.en Progress Dialog]
 
 
[https://linuxize.com/post/how-to-setup-passwordless-ssh-login/ How to Setup Passwordless SSH Login]
 
 
 
[https://linuxize.com/post/using-the-ssh-config-file/#ssh-config-file-example Using the SSH Config File]
 
 
 
[https://www.mycomputertips.co.uk/77 Access FTP server using the Nemo File Manager in Linux Mint]
 
 
 
[https://linuxize.com/post/how-to-transfer-files-with-rsync-over-ssh/ How to Transfer Files with Rsync over SSH]
 
 
 
[https://stackoverflow.com/questions/1405324/how-to-create-a-bash-script-to-check-the-ssh-connection How to create a bash script to check the SSH connection?]
 
  
[https://linoxide.com/bash-shell-script-show-dialog-box/ How to Show Dialog Box using Shell Script with Examples]
+
== Referenties ==
  
[https://help.gnome.org/users/zenity/3.24/progress.html.en Progress Dialog]
+
[[Categorie:Internet]]

Versie van 11 apr 2021 om 23:28

File-sharing en synchronisatie via SSH in je thuisnetwerk

SSH staat voor secure shell. Het is een netwerkprotocol dat gebruik maakt van een beveiligde verbinding. Elke uitwisseling van gegevens tussen twee computers is versleuteld. SSH is gebaseerd op het client server model. Een server verleent toegang aan een client. Met ssh kun je onder meer veilig bestanden delen en overzetten via SFTP. En dat is het onderwerp van dit artikel.

Inleiding

In dit artikel leg ik uit

  • hoe je ssh moet opzetten,
  • hoe je bestanden op de andere computer kan gebruiken vanuit je bestandsbeheerder (Nemo),
  • hoe je een snelkoppeling naar een map op de andere computer op je buroblad zet,
  • hoe je bestanden op de server vanaf een smartphone of tablet kan gebruiken
  • en hoe je hele mappen synchroniseert tussen twee computers.

Ik begin met een korte uitleg over het opzetten van je netwerk: apparatuur en bekabeling,
dan iets over de firewall en ip adressen,
dan het installeren van de software voor ssh,
daarna komt het delen en synchroniseren aan de beurt.

Ik zal ook een aantal links geven waar ik mijn wijsheid vandaan heb gehaald.

Netwerk

Om te beginnen kan het wenselijk zijn om je netwerk met een draadloze router uit te breiden omdat er steeds meer apparaten bijkomen. Voor het uitbreiden van je netwerk is een switch het meest aangewezen apparaat qua kostprijs en eenvoud, maar voor draadloze apparaten of om het bereik van je draadloze netwerk uit te breiden heb je toch wel een router nodig. Op WikiHow staat een heel goed artikel[1] hoe je een router aan je netwerk moet toevoegen zodat de computers en mobiele apparatuur allemaal voor elkaar zichtbaar blijven:

De clou is dat je op de hulp router eerst de dhcp server uitschakelt en vervolgens niet de wan poort maar een lan poort gebruikt om naar de hoofdrouter te verbinden. Als je de dhcp server niet uitschakelt interfereert die met die van de hoofdrouter. Dan gaat je net op slot en kan je helemaal overnieuw beginnen.

Firewall

Om ssh op een computer te kunnen gebruiken moet je er voor zorgen dat de clients toegang hebben tot de computer waarop de ssh server draait. Dat betekent dat je de firewall van de ssh server moet aanpassen. Een heel handig hulpmiddel hiervoor is UFW[2]

Met UFW is het heel eenvoudig om individuele ip adressen van de lokale apparatuur toegang te geven tot de server. Dat betekent wel dat je dan statische ip adressen in je netwerk moet hebben. Dat kun je allemaal in de router configureren samen met IP&MAC binding voor extra veiligheid.
Je kunt op de server een client met adres 192.168.1.183 toegang geven via de regel

sudo ufw allow from 192.168.1.183

Meer is het niet.

Het is sowieso aan te raden om statische adressen in je netwerk te gebruiken omdat het verbinding maken met de server daardoor eenvoudiger wordt. Dat gaat met behulp van het configuratiebestand wat verderop wordt uitgelegd.

Alle apparaten die toegang moeten hebben tot je ssh server moeten door de firewall worden doorgelaten: computers, laptops, smartphones en tablets. Dus voor elk apparaat moet je een regel aanmaken. Je moet niet een reeks van ip-adressen toegang geven want dan zet je de firewall onnodig verder open. Je hoeft het maar één keer te doen.

Als alternatief kun je voor ssh poort 22 openzetten. Dat doe je via de regel

sudo ufw allow ssh

Maar dan staat de firewall open voor alle apparaten die via ssh verbinding willen maken, ook van de buitenwereld buiten je lokale netwerk. Want dan wordt er niet meer op het ip-adres gecontroleerd.
Dan is de firewall van je router de last line of defense geworden. Als je geen IP&MAC binding hebt.
Daarom gebruik ik dit niet in mijn eigen netwerk.

SSH server

Installatie

Om SSH te gebruiken moet het softwarepakket OpenSSH-server worden geïnstalleerd op de machine die als server gaat dienen. Dit kan gewoon vanuit programmabeheer worden geïnstalleerd.
Zodra de installatie voltooid is wordt de ssh service automatisch gestart. Je kunt dit in een terminal controleren met de opdracht

sudo systemctl status ssh

of

sudo service ssh status

de uitvoer ziet er dan ongeveer zo uit:

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2021-02-18 14:54:30 CET; 4 days ago
       Docs: man:sshd(8)
             man:sshd_config(5)
    Process: 202638 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Process: 202639 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
   Main PID: 82034 (sshd)
      Tasks: 1 (limit: 18928)
     Memory: 5.5M
     CGroup: /system.slice/ssh.service
             └─82034 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Dat is het. Je kunt nu verbinding maken met de ssh server vanaf elke andere computer in je netwerk vooropgesteld dat de firewall van de server de ssh service of ip-adressen van die computers toelaat.

Verbinding maken met de ssh server

Om verbinding te maken met de ssh server heb je drie gegevens nodig.

  1. De username waarmee je op de server computer bekend bent,
  2. je wachtwoord
  3. en het ip adres van ssh server.

In een terminal kun je dan verbinding maken met het volgende commando

ssh username@server-ip-adress

Er wordt dan om het wachtwoord gevraagd. Type dat in en druk op enter.
Als je voor de eerste keer verbinding maakt wordt er gevraagd of je door wil gaan met verbinding maken. Antwoord met ja en druk op enter. Deze vraag verschijnt alleen de eerste keer omdat de server dan nog niet bekend is op je lokale machine. Een ECDSA vingerafdruk wordt nu toegevoegd en je bent verbonden met de ssh server.
Om de verbinding te verbreken type je exit in of sluit de terminal.

Je kunt de bestanden op de server ook in je bestandsbeheerder (Nemo) benaderen. Dat gaat als volgt.
Open de bestandsbeheerder
Klik in de menubalk op bestand
Selecteer Verbinding maken met server...
Vul in het venster bij server het ip-adres van de ssh server in
Selecteer bij type SSH
Bij de gebruikersgegevens moet je je username en het wachtwoord invullen
Klik dan rechtsonder op de knop verbinden
Vervolgens verschijnt de mappenlijst van de server in beeld.
Je kunt nu door alle mappen op de ssh server bladeren en van en naar de server kopiëren en verplaatsen van mappen en bestanden.
Dit is file-sharing via ssh op 115 MB/s.

Het vereenvoudigen van verbinding maken

Het maken van verbinding kan op twee manieren worden vereenvoudigd.

  • Ten eerste kan door het uitwisselen van een digitaal sleutelpaar zonder wachtwoord worden ingelogd.
  • Ten tweede kan door een configuratie bestand het ip adres en de username aan een naam worden gekoppeld zodat je alleen nog die naam nodig hebt voor die verbinding.

Het combineren van beide methoden maakt een verbinding vrijwel transparant.

Inloggen zonder wachtwoord

Om met SSH zonder wachtwoord te kunnen inloggen moet je een openbare authenticatie sleutel aanmaken en deze toevoegen aan het bestand ~/.ssh/authorized_keys van de ssh server.
Dat gaat in drie stappen:

  1. controleer of er al een ssh sleutelpaar bestaat,
  2. maak een nieuw ssh sleutelpaar aan,
  3. kopieer de openbare sleutel naar de server.

1) Je moet eerst controleren of je al een ssh sleutel op je machine hebt want je hoeft hem niet te overschrijven. Dat kun je als volgt controleren:
Open de bestandsbeheerder
ga naar de home map, als je daar nog niet in staat
rechts klik voor het context menu
kies In terminal openen
Geef dan de opdracht

ls -al ~/.ssh/id_*.pu

Als je geen sleutels hebt krijg je een melding

No matches found

of

No such file or directory.

Als je wel sleutels hebt kun je de volgende stap overslaan.

2) Met de volgende opdracht kun je een nieuw sleutelpaar aanmaken van 4096 bit en je email-adres als commentaar:

ssh-keygen -t rsa -b 4096 -C "jouw-email@jouw-provider.nl"

Druk op Enter voor de standaard locatie en bestandnaam.
Vervolgens wordt je gevraagd om een secure passphrase in te voeren. Dat geeft een extra beveiliging. Die kun je gewoon leeg laten en met Enter er aan voorbij gaan.
Controleer of je ssh sleutels zijn aangemaakt met

ls ~/.ssh/id_*

De output ziet er ongeveer zo uit:

/home/mogenblue/.ssh/id_rsa /home/mogenblue/.ssh/id_rsa.pub

In plaats van mogenblue zie je dan je eigen username.

Let erop dat je in je home directory staat want met ~/.ssh/..... kijkt het systeem naar de verborgen map .ssh vanaf de huidige map. De .ssh directory staat direct onder je home map, dus dan moet je daar staan om het systeem de map te laten vinden.

3) Om de sleutels te kunnen gebruiken moet je de openbare sleutel naar de server kopiëren. De makkelijkste manier daarvoor is met de ssh-copy-id opdracht

ssh-copy-id username@server_ip_address

Voor username moet je je eigen username gebruiken. Bij ip-adress vul je het ip adres van de ssh server in. Er wordt dan om het wachtwoord gevraagd. Type dat in en druk op enter.
Daarna wordt de openbare sleutel op de server toegevoegd aan het user authorized_keys bestand en wordt de verbinding gesloten.

Je kunt nu inloggen zonder je wachtwoord te hoeven invoeren. In een terminal:

ssh username@server-ip-adress

en vul je eigen username en het ip-adres van de server in. In de bestandsbeheerder hoef je nu ook niet meer je wachtwoord in te voeren als je verbinding wilt maken.

Het user SSH config bestand

De tweede manier om het verbinden met de server te vereenvoudigen is door een naam aan de verbinding te geven en daar de noodzakelijke verbindingsgegevens aan te koppelen zoals ip-adres en username. Dat zet je dan in een ssh configuratiebestand onder je usermap. Precies gezegd in het ~/.ssh/config bestand.
Dus voor user mogenblue is het volledige pad

/home/mogenblue/.ssh/config

Het staat dus in een verborgen map dus je moet in je bestandsbeheerder de verborgen mappen en bestanden laten tonen.

In dat bestand zet je bijvoorbeeld de volgende regels:

Host popeye
    HostName 192.168.1.17
    Port 22
    User mogenblue

Hiermee heb je voor de host met de naam popeye vastgelegd wat het ip-adres van de server is, welke poort wordt gebruikt en wat de username is die je op die server gebruikt. Nu kun je in een terminal met die host verbinding maken met de regel

ssh popeye

meer niet. Zo simpel is het geworden.

Er zijn nog meer mogelijkheden met het ssh config bestand maar om met een eenvoudig thuisnetwerk te beginnen met 1 of 2 servers is dit wel genoeg. Om het simpel te houden.

Verbindingen

Verbinden in de bestandsbeheerder

Nu kun je in je bestandsbeheerder eenvoudiger verbinding maken.
Open de bestandsbeheerder
Klik in de menubalk op bestand
Selecteer Verbinding maken met server...
Vul in het venster bij server de naam van je verbinding in (popeye)
Selecteer bij type SSH
Klik dan direct rechtsonder op de knop verbinden
Vervolgens verschijnt de mappenlijst van de server in beeld en kun je weer navigeren en kopiëren en plakken naar en van de server.
Omdat je kunt inloggen zonder wachtwoord hoef je dat niet meer in te vullen. En het ip-adres en de username worden in het configuratiebestand opgezocht.

Je kan nu ook in je bestandsbeheerder een bladwijzer aanmaken voor je map op de ssh server. Die verschijnt in de zijbalk aan de linkerkant. De verbinding met de server wordt om veiligheidsredenene automatisch na een bepaalde tijd verbroken. Maar je kunt gewoon op de bladwijzer klikken en dan wordt de verbinding automatisch hersteld. Makkelijker kan bijna niet. Of je moet ook met SSHFS werken.

Snelkoppeling naar de ssh server op je buroblad

Je kunt normaal gesproken geen snelkoppeling van een netwerk map in een lokale map of op je buroblad zetten. Dat gaat via een omweg.
Je moet eerst een starter voor bestandsbeheer op je buroblad zetten en dan die starter het netwerkadres van de map op de server geven om mee te openen.

Dat gaat zo:
Klik op de menuknop linksonder
Navigeer naar hulpmiddelen -> bestanden
Rechtsklik en kies voor Toevoegen aan bureaublad
Open de bestandsbeheerder door op het net toegevoegde icoon te klikken
Ga naar de home map op de ssh server
Rechtsklik in het venster met de mappenlijst en kies voor In terminal openen
De prompt ziet er ongeveer uit als

mogenblue@brutus /run/user/1000/gvfs/sftp:host=popeye/home/mogenblue $

Het gedeelte dat de remote host aangeeft moet je selecteren en kopieren, dus

/run/user/1000/gvfs/sftp:host=popeye/home/mogenblue

moet je selecteren
en via de menubalk kies je voor Bewerken -> kopiëren om dat gedeelte te kopiëren
Sluit de terminal
Sluit de bestandsbeheerder
Rechtklik op het nieuw aangemaakte icoon en kies voor Eigenschappen
Bij opdracht staat

Nemo %U

Daarachter plak je het remote adres tussen dubbele aanhalingstekens:

Nemo %U "/run/user/1000/gvfs/sftp:host=popeye/home/mogenblue"

Sluit het Eigenschappen venster
Hernoem het icoon naar ssh popeye home
Kies voor popeye de naam van je eigen remote machine
Klik op het icoon om te openen
Je staat nu in de home map op je remote machine, via ssh.
Klaar.

Bestanden benaderen via ssh op je smartphone of tablet in Android

Op de smartphone en tablet is CX explorer een handige app voor bestandsbeheer. Zowel voor je lokale bestanden als via het draadloze wifi netwerk. Het biedt een reeks aan verbindingsmogelijkheden via het netwerk. Voor het delen van bestanden via SSH heb je in CX Explorer een SFTP verbinding nodig. Om zo'n verbinding toe te voegen doe je het volgende:
In CX Explorer klik je op de Tab Netwerk
Klik op de cirkel rechtsonder met een + om een verbinding toe te voegen
Selecteer de tab Remote
Selecteer SFTP
Vul de gegevens in: ip-adres, username en wachtwoord.
Druk op ok.
De mappenlijst van de server verschijnt in beeld.
Klaar.

Je kunt nu vanaf je smartphone browsen door de mappen op de server. Je kunt ook afbeeldingen op de server bekijken en muziek en video bestanden van de server op je smartphone afspelen. En je kunt bestanden up- en downloaden.

Automatische synchronisatie

Dan gaan we nu verder met twee scripts voor automatische synchronisatie van mappen tussen twee computers.
We beginnen met het script voor het uploaden van mappen van een lokale computer naar de ssh server.

Uploaden

Het shell script noemen we ssh-popeye-uploaden.sh.
Voor popeye gebruik je de naam van je eigen remote machine

#!/bin/bash

# uploaden, push
# rsync van desktop naar ssh server

# -r, --recursive             recurse into directories
# -t, --times                 preserve modification times
# -u, --update                skip files that are newer on the receiver
# -s, --protect-args          no space-splitting; wildcard chars only
# -l, --links                 copy symlinks as symlinks
#     --exclude 'PATTERN'     exclude files matching PATTERN
# -m, --prune-empty-dirs      prune empty directory chains from file-list
#     --delete                delete extraneous files from dest dirs

# vul hier je eigen gegevens in
User='mogenblue'
Host='popeye'

Opties='-r -t -u -s -l -m --delete'
Bron='/home/mogenblue'
Doel='/home/mogenblue'

#-------------------------------------------------------------------------------------------------------------

(

echo "# Test online status ssh ${Host} ... -/-"

Status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 ${User}@${Host} echo ok 2>&1)

if [[ $Status == ok ]] ; then
 echo "# ${Host} online, doorgaan met uploaden."
else
  echo "# ${Host} niet online, uploaden afgebroken."
  sleep 5
  exit
fi

echo '10'
echo '# Synchroniseren Documenten ... 1/6'
rsync $Opties $Bron/Documenten ${User}@${Host}:$Doel

echo '20'
echo '# Synchroniseren Downloads ... 2/6'
rsync $Opties $Bron/Downloads ${User}@${Host}:$Doel

echo '30'
echo '# Synchroniseren Linux ... 3/6'
rsync $Opties $Bron/Linux ${User}@${Host}:$Doel

echo '40'
echo '# Synchroniseren Afbeeldingen ... 4/6'
rsync $Opties $Bron/Afbeeldingen ${User}@${Host}:$Doel

echo '60'
echo '# Synchroniseren Muziek ... 5/6'
rsync $Opties $Bron/Muziek ${User}@${Host}:$Doel

echo '80'
echo "# Synchroniseren Video's ... 6/6"
rsync $Opties "$Bron/Video's" ${User}@${Host}:$Doel

echo '100'
echo '# Synchronisatie voltooid.'

# minimaal 1 seconde tonen ter bevestiging van synchroniseren
sleep 1

) |
zenity --progress \
  --title="Synchroniseren met ${Host} - push" \
  --text="Vergelijken en uploaden ..." \
  --percentage=0 \
  --auto-close --no-cancel --width=600

Bovenaan in het script staan de variabelen waar je je eigen gegevens moet invullen: de naam van de verbinding, je username en het pad naar je eigen usermap op de lokale en de remote machine.

Je kunt natuurlijk de mappen aanpassen die gesynchroniseerd moeten worden maar let er goed op dat je geen / teken aan het eind een map zet. Dat kan desastreuze gevolgen hebben voor je gegevens. Het kan vrijwel alle mappen op je lokale machine, inclusief het buroblad, verwijderen. Maak dus eerst een BACKUP voor je gaat experimenteren! B-A-C-K-U-P

Downloaden

Het script voor downloaden ziet er iets gecompliceerder uit. Dat noemen we ssh-popeye-downloaden.sh. Voor popeye gebruik je weer de naam van je eigen remote machine

#!/bin/bash

# downloaden, pull
# rsync van ssh server naar desktop

# -r, --recursive             recurse into directories
# -t, --times                 preserve modification times
# -u, --update                skip files that are newer on the receiver
# -s, --protect-args          no space-splitting; wildcard chars only
# -l, --links                 copy symlinks as symlinks
#     --exclude 'PATTERN'     exclude files matching PATTERN
# -m, --prune-empty-dirs      prune empty directory chains from file-list
#     --delete                delete extraneous files from dest dirs

# vul hier je eigen gegevens in
User='mogenblue'
Host='popeye'
# userid is in een terminal op te vragen met id -u username
UserID='1000'

Opties='-r -t -u -s -l -m --delete'
Bron='/home/mogenblue'
Doel='/home/mogenblue'

#-------------------------------------------------------------------------------------------------------------

(

echo "# Test online status ssh ${Host} ... -/-"

Status=$(ssh -o BatchMode=yes -o ConnectTimeout=5 ${User}@${Host} echo ok 2>&1)

if [[ $Status == ok ]] ; then
  echo "# ${Host} online, doorgaan met downloaden."
else
  echo "# ${Host} niet online, downloaden afgebroken."
  sleep 5
  exit
fi

echo '10'
echo '# Synchroniseren Documenten ... 1/6'
rsync $Opties ${User}@${Host}:$Bron/Documenten $Doel

echo '20'
echo '# Synchroniseren Downloads ... 2/6'
rsync $Opties ${User}@${Host}:$Bron/Downloads $Doel

echo '30'
echo '# Synchroniseren Linux ... 3/6'
rsync $Opties ${User}@${Host}:$Bron/Linux $Doel

echo '40'
echo '# Synchroniseren Afbeeldingen ... 4/6'
rsync $Opties ${User}@${Host}:$Bron/Afbeeldingen $Doel

echo '60'
echo '# Synchroniseren Muziek ... 5/6'
rsync $Opties ${User}@${Host}:$Bron/Muziek $Doel

echo '80'
echo "# Synchroniseren Video's ... 6/6"
rsync $Opties "${User}@${Host}:$Bron/Video's" $Doel

echo '100'
echo '# Synchronisatie voltooid.'

# minimaal 1 seconde tonen ter bevestiging van synchroniseren
sleep 3

) |

sudo -u $User DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UserID/bus \
zenity --progress \
  --title="Synchroniseren met ${Host} - pull" \
  --text="Vergelijken en downloaden ..." \
  --percentage=0 --pulsate \
  --auto-close --no-cancel --width=600

Beide scripts moeten als programma kunnen worden uitgevoerd:
Rechtsklik op het bestand voor het contextmenu.
Selecteer Eigenschappen.
Ga naar de tab Rechten.
Zet een vinkje bij Uitvoeren: Toestaan dat bestand wordt uitgevoerd als programma.

Met deze twee scripts kun je automatisch je lokale mappen synchroniseren met de mappen op de host machine.
Op een 1Gb netwerk gaat dat met ruim 115MB/sec.
Als er niet teveel veranderd is is het binnen 10-15 seconden gebeurd.

Voor de methoden om te synchroniseren heb ik al eerder een post gemaakt. [3]

Externe Links

How to Cascade Routers
How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server
How to Enable SSH on Ubuntu 20.04
How to Setup Passwordless SSH Login
Using the SSH Config File
Access FTP server using the Nemo File Manager in Linux Mint
How to Transfer Files with Rsync over SSH
How to create a bash script to check the SSH connection?
How to Show Dialog Box using Shell Script with Examples
Progress Dialog

Referenties

  1. How to Cascade Routers
  2. How To Setup a Firewall with UFW on an Ubuntu and Debian Cloud Server
  3. Methoden voor synchronisatie