SSH eller Secure Shell er en protokoll som lar deg kommunisere med en annen datamaskin eller server på kommandolinje-nivå. SSH gir blant annet mulighet for å redigere, laste opp- og ned filer, endre eller administrere tjenester.
Secure Shell ble opprettet som en sikker erstatning for gamle Telnet, og i motsetning til den, er selve innloggingen og all kommunikasjon til og fra tjeneren kryptert.
Skjermbildet under viser et typisk SSH -vindu. Brukere på Linux eller Mac har innebygd støtte for Secure Shell, mens Windows-brukere kan benytte seg av programvare som Putty eller SecureCRT.

Forskjellige krypteringsteknikker
En fordel med SSH eller Secure Shell er at kommunikasjon mellom deg og tjener er kryptert. SSH bruker tre forskjellige krypteringsteknologier.
Symmetrisk kryptering
Symmetrisk kryptering er en form for kryptering der en hemmelig nøkkel brukes til både kryptering og dekryptering av meldinger og data.
Denne metoden for kryptering er ofte kalt «shared key» eller «shared secret». Vanligvis brukes bare en nøkkel, men i noen tilfeller brukes et nøkkelpar, hvor en enkelt kan regnes ut ved å bruke den andre nøkkelen i paret.

Symmetriske nøkler brukes til å kryptere all kommunikasjon under en SSH-økt.
Både klienten og tjeneren henter den hemmelige nøkkelen ved å bruke en avtalt metode, hvor den endelige nøkkelen aldri blir avslørt til uvedkommende. Prosessen med å lage en symmetrisk nøkkel utføres av en nøkkelutvekslingsalgoritme.
Det som gjør denne algoritmen så sikker, er det det faktum at nøkkelen aldri overføres mellom klient og tjener. I stedet deler de to maskinene meldinger offentlig for å uavhengig (av hverandre) kunne regne seg frem til den hemmelige nøkkelen.
Selv om en annen datamaskin skulle fange opp disse meldingene, vil den ikke kunne regne seg frem til nøkkelen, fordi selve nøkkelutvekslingsalgoritmen ikke er kjent.
Asymmetrisk kryptering
I motsetning til symmetrisk kryptering, bruker asymmetrisk kryptering to separate nøkler for kryptering og dekryptering. Disse to består av en «public» (offentlig), og en «private» (privat) nøkkel. Sammen danner disse to et «public-private key pair» (offentlig-privat nøkkelpar).

Den offentlige nøkkelen er som du sikkert har gjettet allerede, distribuert åpent og delt med alle som trenger den.
Selv om den offentlige nøkkelen er nært koblet til den private nøkkelen, kan ikke den private nøkkelen regnes ut fra den offentlige.
Forholdet mellom de to nøklene er utrolig innviklet: En melding som er kryptert med den offentlige nøkkelen, kan bare dekrypteres med den tilhørende private nøkkelen i nøkkelparet.
Dette er med andre ord et enveis-forhold, hvor meldinger kryptert med den offentlige nøkkelen, ikke kan dekrypteres med samme nøkkel. Den offentlige nøkkelen kan heller ikke dekryptere noe som er kryptert med den private nøkkelen i nøkkelparet.
For at Secure Shell -forbindelsen skal være sikker, må ingen tredjepart eller uvedkommende noen gang vite hva den private nøkkelen er. Styrken i denne krypteringsmetoden, ligger med andre ord i det faktum at den private nøkkelen aldri blir avslørt.
I motsetning til det mange tror, brukes ikke asymmetrisk kryptering for å kryptere hele SSH -økten. I stedet brukes den bare under nøkkelutvekslingsalgoritmen for symmetrisk kryptering.
Før de innleder sikker kommunikasjon seg imellom, skaper begge parter et midlertidig nøkkelpar, for å så dele sine respektive private nøkler slik de kan produsere en delt hemmelig nøkkel.
I det en sikker symmetrisk kommunikasjon er etablert, vil tjeneren bruke klientens offentlige nøkkel for å kryptere melding om autentisering. Hvis klienten kan dekryptere meldingen, betyr det at klienten har den private nøkkelen som behøves for tilkoblingen. SSH -økten kan dermed starte.
Hashing
Hash eller hashing er en annen form for kryptografi som også brukes i SSH-forbindelser. Hashing skiller seg fra de to overnevnte krypteringsformene, i den forstand at det ikke er meningen meldingene skal dekrypteres.

Protokollen Secure Shell bruker hash for å verifisere at hver melding er autentisk. Dette gjøres ved å bruke noe som kalles for «HMAC» eller Hash-based Message Authentication Codes.
Dette sikrer at kommando eller melding som mottas, ikke blir tuklet med på noen som helst måte.
Hvordan bruker SSH disse krypteringsteknikkene
Som nevnt er SSH basert på en klient- og tjenermodell, hvor alle meldinger og data er kryptert.
Tjeneren eller serveren lytter vanligvis etter inngående forbindelser på port 22 (TCP), men merk deg at portnummeret kan endres.
Det er faktisk ganske vanlig at mange forsøker å stoppe automatiske innloggingsforsøk fra uvedkommende ved å bytte portnummeret, en annen effektiv metode er å sikre SSH-serveren med Fail2Ban.
Klienten starter altså SSH-tilkoblingen ved å opprette et TCP-håndtrykk med serveren. Her vil klient og tjener forsøke å opprette en symmetrisk kryptert forbindelse. Serveren presenterer for klienten hvilke protokoller den støtter.
Dersom klienten støtter noen av disse protokollene, opprettes en forbindelse mellom de to. I denne prosessen vil serveren i tillegg benytte en asymmetrisk offentlig nøkkel, som klienten kan benytte for å bekrefte at kommunikasjon med serveren er ekte.
Når som denne forbindelsen er etablert, bruker de to partene en algoritme kjent som Diffie Hellman Key Exchange for å lage en symmetrisk nøkkel.
Denne algoritmen har som mål at klient og server kan komme fram til en delt krypteringsnøkkel som brukes for å kryptere økten.
Når en delt krypteringsnøkkel er opprettet, vil forbindelsen mellom klient og server benytte symmetrisk kryptering.
Det neste trinnet er at brukeren må autentisere seg eller logge inn med riktige opplysninger på serveren.
I de fleste tilfeller brukes det bare et brukernavn og passord for å logge inn via SSH. Klienten blir spurt om å skrive inn brukernavn, etterfulgt av passord.
Disse opplysningene sendes gjennom den allerede symmetrisk krypterte forbindelsen, dermed er det ikke fare for at disse (sensitive) opplysningene kommer på avveie.
Selv om passordet sendes kryptert, er det imidlertid ikke anbefalt at man logger inn ved hjelp av passord. Dette fordi at boter eller andre datasystemer kan benytte «brute force» eller lignende teknikker for å gjette seg frem til passordet.
Den sikreste metoden er å bruke et SSH-nøkkelpar. Et SSH-nøkkelpar er et sett med asymmetriske nøkler som beskrevet under asymmetrisk kryptering. I praksis lagres den offentlige nøkkelen på serveren i forkant, mens den private nøkkelen er hos klienten.
Oppsummering
Å få en grundig forståelse av det underliggende om hvordan Secure Shell fungerer, kan hjelpe deg å forstå hvordan sikkerheten er ivaretatt.
De fleste tror prosessen er ekstremt komplisert og delvis uforståelig, men det er ikke så vanskelig som de fleste tror.
Forhåpentligvis har denne introduksjonen til hvordan SSH fungerer hjulpet deg å se hvordan forskjellige sikkerhetsteknologier kan kobles sammen for å lage et sterkt system der hver mekanisme har en viktig rolle.