Hvordan konfigurere tilpassede SSH-tilkoblinger for å forenkle fjerntilgang


SSH (SSH-klient) er et program for ekstern tilgang til en maskin, det gjør det mulig for en bruker å utføre kommandoer på en ekstern vert. Det er en av de mest anbefalte metodene for å logge på en ekstern vert, siden den er designet for å gi sikker kryptert kommunikasjon mellom to ikke-klarerte verter over et usikkert nettverk.

SSH bruker både en systemomfattende og en brukerspesifikk (tilpasset) konfigurasjonsfil. I denne opplæringen vil vi forklare hvordan du oppretter en tilpasset ssh-konfigurasjonsfil og bruker visse alternativer for å koble til eksterne verter.

  1. Du må ha installert OpenSSH-klient på Linux-skrivebordet.
  2. Forstå de vanlige alternativene som brukes for eksterne tilkoblinger via ssh.

Nedenfor er plasseringene til ssh-klientkonfigurasjonsfilene:

  1. /etc/ssh/ssh_config – dette er standard, systemomfattende konfigurasjonsfil. Den inneholder innstillinger som gjelder for alle brukere av ssh-klientmaskinen.
  2. ~/.ssh/config eller $HOME/.ssh/config – er den brukerspesifikke/tilpassede konfigurasjonsfilen. Den har konfigurasjoner som gjelder for en bestemt bruker. Den overstyrer derfor standardinnstillinger i den systemomfattende konfigurasjonsfilen. Dette er filen vi skal lage og bruke.

Som standard blir brukere autentisert i ssh ved hjelp av passord, men du kan konfigurere ssh passordløs pålogging ved å bruke ssh keygen i 5 enkle trinn.

Merk: Hvis katalogen ~/.ssh ikke eksisterer på skrivebordssystemet ditt, oppretter du den med følgende tillatelser.

$ mkdir -p ~/.ssh
$ chmod 0700 ~/.ssh   

chmod-kommandoen ovenfor innebærer at bare brukeren kan ha lese-, skrive- og utføringstillatelser på katalogen som kreves av ssh-innstillinger.

Hvordan lage brukerspesifikk SSH-konfigurasjonsfil

Denne filen er vanligvis ikke opprettet som standard, så du må opprette den med lese-/skrivetillatelser for kun brukeren.

$ touch ~/.ssh/config
$ chmod 0700 ~/.ssh/config

Ovennevnte fil inneholder seksjoner definert av vertsspesifikasjoner, og en seksjon brukes kun på verter som samsvarer med et av mønstrene som er satt i spesifikasjonen.

Det konvensjonelle formatet til ~/.ssh/config er som følger, og alle tomme linjer så vel som linjer som begynner med ‘#’ betraktes som kommentarer:

Host    host1
	ssh_option1=value1
	ssh_option2=value1 value2
	ssh_option3=value1 

Host    host2
	ssh_option1=value1
	ssh_option2=value1 value2

Host  *
	ssh_option1=value1
	ssh_option2=value1 value2

Fra formatet ovenfor:

  1. Vert vert1 – er en overskriftsdefinisjon for vert1, det er her en vertsspesifikasjon starter og den slutter med neste overskriftsdefinisjon, Vertsvert2 som lager en seksjon.
  2. vert1, vert2 er ganske enkelt vertsaliaser som skal brukes på kommandolinjen, de er ikke de faktiske vertsnavnene til de eksterne vertene.
  3. Konfigurasjonsalternativene som ssh_option1=verdi1, ssh_option2=verdi1 verdi2 gjelder for en matchet vert og bør rykkes inn for godt organisert formatering.
  4. For et alternativ som ssh_option2=verdi1 verdi2, vurderes verdien verdi1 først, deretter verdi2.
  5. Overskriftsdefinisjonen Host * (der * er et mønster – jokertegn som samsvarer med null eller flere tegn) vil samsvare med null eller flere verter.

Fortsatt med tanke på formatet ovenfor, er dette hvordan ssh leser konfigurasjonsfilen. Hvis du utfører en ssh-kommando for å få ekstern tilgang til host1 slik:

$ ssh host1

Ovennevnte ssh-kommando vil gjøre følgende ting:

  1. matcher vertsaliaset vert1 i konfigurasjonsfilen og bruker alternativene satt under definisjonsoverskriften, vertsvert1.
  2. flytter deretter til neste vertsdel, Host host2, og finner ut at navnet på kommandolinjen ikke stemmer overens, så ingen alternativer brukes herfra.
  3. Den går videre til den siste delen, Host *, som samsvarer med alle verter. Her bruker den alle alternativene i denne delen på vertstilkoblingen. Men den kan ikke overstyre noen verdier for alternativer som allerede ble brukt i forrige seksjon(e).
  4. Det samme gjelder for vert2.

Slik bruker du brukerspesifikk SSH-konfigurasjonsfil

Når du har forstått hvordan ssh-klientens konfigurasjonsfil fungerer, kan du opprette den som følger. Husk å bruke alternativer og verdier (vertsaliaser, portnumre, brukernavn og så videre) som gjelder for ditt servermiljø.

Åpne konfigurasjonsfilen med din favorittredigerer:

$ vi ~/.ssh/config

Og definer de nødvendige delene:

Host fedora25
        HostName 192.168.56.15
        Port 22
        ForwardX11 no

Host centos7
        HostName 192.168.56.10
        Port 22
        ForwardX11 no

Host ubuntu
        HostName 192.168.56.5
        Port 2222
        ForwardX11 yes

Host *
        User tecmint
        IdentityFile ~/.ssh/id_rsa
        Protocol 2
        Compression yes
        ServerAliveInterval 60
        ServerAliveCountMax 20
        LogLevel INFO

En detaljert forklaring av ssh-konfigurasjonsalternativene ovenfor.

  1. Vertsnavn – definerer det virkelige vertsnavnet for å logge på, alternativt kan du bruke en numerisk IP-adresse, det er også tillatt (både på kommandolinjen og i spesifikasjonene for vertsnavn).
  2. Bruker – spesifiserer brukeren som skal logges på som.
  3. Port – angir portnummeret som skal kobles til på den eksterne verten, standarden er 22. Bruk portnummeret som er konfigurert i den eksterne vertens sshd-konfigurasjonsfil.
  4. Protokoll – dette alternativet definerer protokollversjonene ssh skal støtte i preferanserekkefølge. De vanlige verdiene er 1 og 2, flere versjoner må skilles med komma.
  5. IdentityFile – spesifiserer en fil som brukerens DSA-, Ed25519-, RSA- eller ECDSA-autentiseringsidentitet leses fra.
  6. ForwardX11 – definerer om X11-tilkoblinger automatisk skal omdirigeres over den sikre kanalen og DISPLAY-settet. Den har to mulige verdier \ja eller \nei.
  7. Komprimering – den brukes til å angi komprimering under ekstern tilkobling med «ja»-verdien. Standard er «nei».
  8. ServerAliveInterval – setter et tidsavbruddsintervall i sekunder etter at hvis ingen respons (eller data) er mottatt fra serveren, vil ssh sende en melding gjennom den krypterte kanalen for å be om svar fra serveren. Standardverdien er 0, noe som betyr at ingen meldinger vil bli sendt til serveren, eller 300 hvis BatchMode-alternativet er definert.
  9. ServerAliveCountMax – angir antall aktive servermeldinger som kan sendes uten at ssh mottar noe svar fra serveren.
  10. LogLevel – definerer omfangsnivået som brukes ved logging av meldinger fra ssh. De tillatte verdiene inkluderer: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 og DEBUG3. Og standard er INFO.

Standardmåten for å koble til en hvilken som helst ekstern Linux-vert (CentOS 7 – i mitt tilfelle), definert i seksjon to i konfigurasjonsfilen ovenfor, vil vi normalt skrive inn kommandoen nedenfor:

$ ssh -i ~/.ssh/id_rsa -p 22 [email 

Men med bruk av ssh-klientkonfigurasjonsfilen kan vi ganske enkelt skrive inn følgende kommando:

$ ssh centos7 

Du kan finne flere alternativer og brukseksempler på man-siden for ssh-klientkonfigurasjon:

$man ssh_config

Det var det for nå, i denne guiden forklarte vi deg hvordan du bruker en brukerspesifikk (tilpasset) ssh-klientkonfigurasjonsfil i Linux. Bruk tilbakemeldingsskjemaet nedenfor for å skrive tilbake til oss angående denne artikkelen.