OpenSSH daemon konfiguration (sshd config) - Hurtig forbindelse m. ssh


Indledning

Flere kender nok til problemstillingen, hvor man vil logge på en enhed via ssh. Desværre har man glemt ip-adresse, domæne, port - eller måske endda adgangskoden. I f.eks. Debian og Linux Mint (Ubuntu) er det dog muligt at lave din egen konfiguration, hvor du kan angive Hostname, User, Port og f.eks. IdentityFile.

Følgende kan naturligvis også bruges, hvis man blot har en intension om at spare tid. Der er rigtig mange muligheder, hvis du har lyst til at kigge i den officielle dokumentation.

Konfiguration i .ssh/config

I filen `~/.ssh/config/ kan du tilføje forbindelser, som du ønsker at forbinde til, lidt hurtigere end normalt.

Strukturen i filen er ret simpel, og en enkelt ting kunne være:

Host minserver 10.0.0.10
        HostName 10.0.0.10
        User exetico

Overstående gør det muligt at forbinde ved blot at skrive ssh docker, fremfor at skulle skrive ssh [email protected]. Allerede der har man sparet et par anslag - og man slipper for at huske adressen.

Nedenfor vil jeg gennemgå de enkelte muligheder.

Enhed Beskrivelse F.eks.
Host Benyttes som “navn” til din enhed. Det er også muligt angive flere, hvis man f.eks. både vil kunne logge på m. et custom-navn, og f.eks. ip-adressen (som reelt blot er et eksra navn) minserver
HostName Her defineres host, som f.eks. IP-adresse, domæne eller et kendt lokalt hostname 10.0.0.10
User Brugernavnet du vil forbinde med exetico
Port Her kan port angives, hvis den ikke er default (22) 2222
IdentityFile Her kan angives en key, hvis denne ikke blot er id_rsa (eller anden default-værdi ~/.ssh/id_rsa_ejdefaultvalue
LocalForward Tillader dig at forwarde en port fra serveren - f.eks. port :80 fra serverem til port :8080 hvor du forbinder fra (klienten) 8080 127.0.0.1:80

Hvis jeg f.eks. vil forbinde til 10.0.0.10 med brugeren exetico på port 2222 ved at skrive ssh minserver, skal filen opstilles således:

Host minserver 10.0.0.10
        HostName 10.0.0.10
        User exetico
        Port 2222

Hvis jeg samtidig ønsker f.eks. at lave en LocalForward fra port :8888, til port :8080 på min maskine, jeg forsøger at forbinde fra, kan det gøres således:

Host minserver 10.0.0.10
        HostName 10.0.0.10
        User exetico
        Port 2222
        LocalForward 8080 127.0.0.1:8888

Når jeg da har forbundet med ssh minserver vil kunne gå til http://localhost:8080 (el. http://127.0.0.1:8080) via min klients webbrowser.

Du kan med fordel oprette en tunnel-forbindelse på denne måde, ved at forbinde med ssh -f -N minserver.

-f betyder at SSH-sessionen oprettes i baggrunden. -N betyder at der ikke bliver eksekveret kode på fjern-enheden.

OBS: Bemærk venligst at det kræver root-adgang, hvis man vil sende data til f.eks. port 80, da denne ses som en priviligeret port.

Slip for at taste adgangskode, med ssh-copy-id

Du kan slippe for at indtaste din adgangskode, ved i stedet at forbinde med en nøgle. På dansk oversættes den bekendte løsning som “autorisering med offentlig nøgle”, men du kan bl.a. læse meget mere om dette lige her, ved SSH.com.

Du kan forbinde med en privat, eller en offentlig nøgle. Førstnævnte er beskyttet med en adgangskode.

Lav en ny SSH nøgle

Først skal du lave en ny nøgle, som efterfølgende kan blive sendt til serveren.

Dette gøres ganske simpelt med ssh-keygen. Følg de enkelte steps.

Først angives et navn, inkl. evt. sti på hvor nøglen skal gemmes. Herefter indtaster du en ønsket kode, hvis nøglen skal være krypteret - alternativt under du dettee, men da vil sikkerheden være markant ringere, i og med at alle med nøglen, vil kunne logge på din server. Din adgangskode skal være på minimum 5 cifre.

ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/exetico/.ssh/id_rsa): min_noegle
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in min_noegle.
Your public key has been saved in min_noegle.pub.
The key fingerprint is:
SHA256:yCqTWTLb9DDDDE4GaHGgVD7+DdDD7Gt4t2eODFKEcFD [email protected]
The key's randomart image is:
+---[RSA 2048]----+
| .o.o... o       |
| . +    = o      |
|  o =  . =       |
| ..---------     |
|  ++*od S.       |
| . @f=. .        |
|. X go+. .       |
| o + +*o...      |
|    o=.....      |
+----[SHA256]-----+

Alt efter hvor du har gemt din key, og hvad den er blevet kaldt, kan du nu sende denne til serveren. I nedenstående eksempel har vi døbt denne min_noegle

Dette gøres med: ssh-copy-id -i ~/.ssh/min_noegle [email protected] Du kan med fordel også bruge oplysningerne fra din config-fil, hvis du allerede har sat den op: ssh-copy-id -i ~/.ssh/min_noegle minserver

Hvis du har lavet en kopi af din nøgle og flytter denne til en anden klient, efter du har flyttet nøglen til din server, vil du her kunne gøre brug af IdentityFile ved at angive den fulde sti til filen, på den pågældende klient, som f.eks. IdentityFile ~/.ssh/min_noegle minserver.

OBS: For at kunne bruge nøgler, skal du sikre at dine permissions er korrekte. Mapping skal være 700, din public-key være 644, mens din private-key helst skal være 600. Det er lidt smag og behag med de sidste to. Har du problemer må du gerne stille spørgsmål i kommentar-sporet. Måske vil jeg gennemgå rettigheder en anden dag.

Du kan med fordel f.eks. læse mere her, hvis du skulle have lyst til at høre om flere tips. Har du fået blod på tanken, kan du evt. tage et kig på den officielle dokumentation, hvor der er mange flere tips, muligheder - og forklaring.