Wat is SSH?

Een protocol (en commando) dat de communicatie versleutelt om via een netwerk op een andere computer in te loggen en daar commando's uit te voeren. De server luistert standaard op TCP-poort 22. Voor authenticatie wordt naast wachtwoorden vaak authenticatie met een publieke sleutel gebruikt: de publieke sleutel die bij de eigen privésleutel hoort, wordt geregistreerd in ~/.ssh/authorized_keys op de server. Over dezelfde verbinding kunnen bestanden worden overgezet met scp of rsync, en kunnen poorten worden doorgestuurd.

Japanse benaming: SSH

“SSH” komt voor in 3 oefenvragen uit 2 onderwerpen, bijv. Basis van Linux en de opdrachtregel, Basis van computernetwerken.

Vakgebied: Basis van Linux en de opdrachtregel

Hoe authenticatie met een publieke sleutel werkt

Met ssh-keygen wordt een paar van een privésleutel en een publieke sleutel gemaakt, en alleen de publieke sleutel (het .pub-bestand) wordt in authorized_keys op de server geregistreerd. Bij het verbinden maakt de client met de privésleutel een handtekening en legt die aan de server voor, die haar controleert met de geregistreerde publieke sleutel; de privésleutel zelf gaat dus nooit over het netwerk. De privésleutel wordt beschermd met een wachtwoordzin, en door hem aan ssh-agent toe te vertrouwen hoeft die niet bij elke verbinding te worden ingevoerd.

De server controleren

Bij de eerste verbinding toont ssh de vingerafdruk van de hostsleutel van de server en legt die, als ze wordt geaccepteerd, vast in ~/.ssh/known_hosts. Als daarna een andere sleutel dan de vastgelegde wordt aangeboden, waarschuwt ssh en stopt het, zodat een server die zich voor een andere uitgeeft, kan worden opgemerkt. Als de waarschuwing verschijnt zonder reden, zoals een vervangen server, mag de verbinding niet worden voortgezet.

Gebruik in ontwerpwerk

Gebruikers loggen vanaf hun pc met ssh in op de rekenservers waarop EDA-tools draaien, starten simulaties en controleren resultaten. Door hostaliassen, gebruikersnamen, sleutelbestanden en tussenservers (ProxyJump) in ~/.ssh/config te schrijven, kan met alleen ssh server1 verbinding worden gemaakt. Tools met een grafische interface worden gebruikt in combinatie met X11-forwarding of mechanismen voor extern bureaublad.

Nu oefenen: vragen over SSH

Op een server die via SSH is bereikt, werd een langdurige taak gestart met „./run.sh &”, en toen de verbinding werd verbroken, stopte de taak ook. Wat is de meest geschikte manier om de taak te starten zodat die blijft draaien nadat de verbinding is verbroken?

  1. A./run.sh > run.log 2>&1 &
  2. Bnice -n 19 ./run.sh > run.log 2>&1 &
  3. Cnohup ./run.sh > run.log 2>&1 &
Antwoord en toelichting tonen

Antwoord: C. nohup ./run.sh > run.log 2>&1 &

Wanneer de verbinding wegvalt, wordt SIGHUP, dat meldt dat de terminal is opgehangen, naar de shell gestuurd, en shells zoals bash sturen SIGHUP ook naar hun jobs. De standaardreactie op SIGHUP is stoppen, dus ook achtergrondjobs stoppen. nohup start het commando zo dat het SIGHUP negeert, en als de uitvoer met een omleiding naar een bestand gaat, blijft de taak draaien nadat de verbinding is verbroken. Als het zonder omleiding van de uitvoer vanuit een terminal wordt gestart, schrijft nohup de uitvoer naar een bestand met de naam nohup.out. Een andere veelgebruikte aanpak is een tool zoals tmux of screen, die de terminalsessie op de server in stand houdt, zodat je je later opnieuw met hetzelfde scherm kunt verbinden.

Veelgestelde vragen

Ik kan geen verbinding maken en „Permission denied (publickey)” wordt getoond. Wat moet ik controleren?

Controleer of de publieke sleutel die bij de gebruikte privésleutel hoort, in ~/.ssh/authorized_keys op de server is geregistreerd, en of de gebruikersnaam klopt. Als de rechten van ~/.ssh of authorized_keys op de server te ruim zijn (schrijfbaar voor anderen), wordt de sleutel om veiligheidsredenen mogelijk niet gebruikt; stel daarom bijvoorbeeld ~/.ssh in op 700 en authorized_keys op 600. Met ssh -v is te zien welke sleutels zijn geprobeerd.

Hoe kies ik tussen scp en rsync?

Beide kunnen bestanden via ssh overzetten. scp is geschikt voor eenvoudige kopieën, terwijl rsync alleen de verschillen met de bestemming verstuurt en daardoor efficiënt is om grote directory's herhaaldelijk te synchroniseren of onderbroken overdrachten te hervatten. Gebruikt als rsync -av --delete maakt het de bestemming gelijk aan de bron, maar --delete verwijdert bestanden die alleen op de bestemming bestaan, dus voorzichtigheid is nodig.

“SSH” in de toelichting

Vragen met “SSH” (3)

  1. Op een server die via SSH is bereikt, werd een langdurige taak gestart met „./run.sh &”, en toen de verbinding werd verbroken, stopte de taak ook. Wat is de meest geschikte manier om de taak te starten zodat die blijft draaien nadat de verbinding is verbroken?
  2. Je hebt op je eigen pc met ssh-keygen een sleutelpaar voor authenticatie met een publieke sleutel gemaakt en wilt zonder wachtwoord met ssh verbinding maken met de server server1. Hoe moeten de sleutels worden geplaatst?
  3. Welke combinatie van protocollen en de poortnummers die hun servers standaard gebruiken, is juist?

Verwante termen

Shell Omleiding van invoer en uitvoer (I/O redirection) Poortnummer HTTP (Hypertext Transfer Protocol) DNS (Domain Name System) Bestandsrechten (permissies) cron Git grep Harde link (hard link)

Naar de woordenlijst