Ga naar hoofdinhoud

7.2 Inloggen op een andere computer

Hier bouw je op verder: Diensten en het logboek en Inlogpogingen in auth.log

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Een server staat in een datacenter, ver weg en zonder scherm. Je werkt erop via ssh (secure shell): je typt in je eigen , en de draaien op de server. Alles wat over de lijn gaat, is versleuteld.

Je kunt het oefenen zonder server. Je logt in op je eigen , alsof die ver weg staat. Daarvoor heb je de ssh- nodig:

sudo apt update
sudo apt install openssh-server

Inloggen​

ssh localhost

localhost is "deze computer". Op een echte server staat hier zijn naam of adres, bijvoorbeeld ssh sam@server.voorbeeld.nl. De eerste keer vraagt ssh iets:

The authenticity of host 'localhost (127.0.0.1)' can't be established.
ED25519 key fingerprint is SHA256:Xq3v...
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

ssh kent deze computer nog niet en laat zijn vingerafdruk zien. Typ yes. ssh onthoudt de vingerafdruk in ~/.ssh/known_hosts en vraagt het daarna niet meer. Typ daarna je wachtwoord.

Je zit nu "op de andere computer". De lijkt hetzelfde, want het is dezelfde. Met exit ga je terug.

Voorspel​

Je logt nog een keer in met ssh localhost. Terwijl je nog ingelogd bent, kijk je in het logboek van de ssh-dienst:

sudo journalctl -u ssh -n 10

Wat denk je dat er staat?

Klik hier als je het hebt geprobeerd

Tussen de regels staat er een zoals deze, met jouw naam:

Accepted password for sam from 127.0.0.1 port 51234 ssh2

Elke inlogpoging staat erin, ook de mislukte. Net als in 2.1: een server op internet krijgt elke dag duizenden pogingen van programma's die wachtwoorden raden.

Een sleutel in plaats van een wachtwoord​

Een wachtwoord kan geraden worden. Een sleutelpaar niet. Maak er een:

ssh-keygen -t ed25519

Druk op Enter bij de vraag waar hij moet komen. Daarna vraagt hij een passphrase: een wachtwoord op je sleutel. Kies er een; dan heeft iemand die je laptop steelt nog niets aan de sleutel.

Je hebt nu twee bestanden in ~/.ssh:

BestandWat het is
id_ed25519je privésleutel. Geheim. Deze geef je nooit aan iemand en zet je nooit online.
id_ed25519.pubje publieke sleutel. Die mag iedereen zien; die zet je op de server.

Zet je publieke sleutel op de "server":

ssh-copy-id localhost

Log nu opnieuw in met ssh localhost. ssh vraagt geen wachtwoord van de server meer, alleen de passphrase van je sleutel. De server stuurt een vraag die alleen te beantwoorden is met de privésleutel, en die verlaat jouw computer nooit.

Opdracht 7.2.a: commando op afstand​

ssh kan ook één commando uitvoeren en dan meteen terugkomen. Laat met één regel zien hoe lang de "server" al aanstaat. Het commando daarvoor op de server is uptime.

Klik hier voor een tip

Het commando komt achter de naam van de server.

Klik hier voor het antwoord
ssh localhost uptime

Je krijgt één regel met de tijd, hoe lang de computer aanstaat en hoe druk hij is, en daarna staat je prompt weer op je eigen computer.

Er gaat iets mis​

Connection refused​

ssh: connect to host localhost port 22: Connection refused

Oorzaak: op die computer draait geen ssh-dienst, of hij staat uit.

Oplossing: installeer openssh-server en zet de socket aan, die de dienst start als er iemand inlogt:

sudo apt install openssh-server
sudo systemctl enable --now ssh.socket

Remote host identification has changed​

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

Oorzaak: de server laat een andere vingerafdruk zien dan ssh onthouden heeft. Dat kan betekenen dat iemand zich als jouw server voordoet. Het gebeurt ook als de server opnieuw is geïnstalleerd.

Oplossing: stop en vraag na of de server opnieuw is geïnstalleerd. Weet je dat zeker, haal dan de oude vingerafdruk weg en log opnieuw in:

ssh-keygen -R localhost

Unprotected private key file​

Permissions 0755 for '/home/sam/.ssh/id_ed25519' are too open.

Oorzaak: ook anderen mogen je privésleutel lezen. ssh weigert hem dan. Dat gebeurt als je de sleutel van Windows hebt gekopieerd.

Oplossing: maak hem alleen van jou, met chmod uit 6.5. De 600 betekent rw-------, in de tekens uit 4.1 Van wie is dit?: alleen de mag lezen en schrijven.

chmod 600 ~/.ssh/id_ed25519

Laat de ssh-dienst aan: je hebt hem nodig tot en met 7.5.

Door naar 7.3 Je sleutel op GitHub.