I denne artikkelen har vi samlet våre beste tips for mer effektiv bruk av SSH. Her får du vite hvordan:
- Legge til en to-faktor for SSH-pålogging
- Bruke agent forwarding på en sikker måte
- Avslutte en hengende SSH-økt
- Holde et vedvarende terminalvindu åpent
- Dele en ekstern terminaløkt med en venn (uten Zoom!)
Legge til en to-faktor til din SSH
Du kan legge til en to-faktor autentisering til dine SSH-tilkoblinger på fem ulike måter:
- Oppdater OpenSSH-en din og bruk en krypteringsnøkkel. I februar 2020 ble det lagt til støtte for FIDO U2F (Universal Second Factor) krypteringsnøkler i OpenSSH. Dette er en flott ny funksjon, men det er en caveat: Bare de klientene og serverne som har oppdatert til OpenSSH 8.2 eller nyere, vil kunne bruke krypteringsnøkler, ettersom februaroppdateringen introduserer nye nøkkeltyper for dem. Du kan sjekke klientversjonen av SSH med kommandoen
ssh –Vog serverversjonen med kommandoennc [servername] 22
Februarversjonen la til to nye nøkkeltyper — ecdsa-sk og ed25519-sk (sammen med tilsvarende sertifikater). For å generere en nøkkelfil, skriv inn krypteringsnøkkelen din og kjør kommandoen:$ ssh-keygen -t ecdsa-sk -f ~\/ .ssh\/id_ecdsa_skDen vil generere en offentlig og privat nøkkel, og knytte dem til enheten din med U2F. Oppgaven til den private nøkkelen på U2F-enheten er å dekryptere den hemmelige nøkkelbeskrivelsen på disken når krypteringsnøkkelen er aktivert.
I tillegg kan du som sekundær faktor gi en kodefrase for nøklene dine.
Resident nøkkel er en annen type -sk-nøkkeler som støttes av OpenSSH. Med en slik tilnærming lagres beskrivelsen på U2F-enheten og gir deg tilgang til den med krypteringsnøkkelen når det trengs. Du kan opprette en resident nøkkel med kommandoen:
$ ssh-keygen -t ecdsa-sk -O resident -f ~\/ .ssh\/id_ecdsa_skDeretter, for å returnere beskrivelsen til minnet på en ny enhet, setter du inn krypteringsnøkkelen og kjører kommandoen:
$ ssh-add -KNår du kobler til verten, må du fortsatt aktivere krypteringsnøkkelen.
- Bruke PIV+PKCS11 og Yubikey. For å koble til enheter med eldre versjoner av SSHD med krypteringsnøkkelen, kreves det en annen tilnærming. På Yubico finnes det en guide for bruk av U2F+SSH med PIV\/PKCS11 (engelsk). Dette er ikke det samme som FIDO U2F, og selv om metoden fungerer, krever det mye arbeid å forstå hvilken magi som ligger bak.
- Bruk en tilpasset yubikey-agent ssh-agent. Filippo Valsorda har skrevet en SSH-agent for Yubikeys. Den er helt ny og inneholder et minimum av funksjoner.
- Bruke Touch ID og sekey. Sekey er en SSH-agent med åpen kildekode, som lagrer hemmelige nøkler i en beskyttet enclave på Mac og lar deg bruke Touch ID for tilgang.
- Bruke Single Sign On SSH. Jeg har skrevet en veiledning for å hjelpe med å sette opp denne metoden (engelsk). En av fordelene med single sign on SSH er muligheten til å benytte sikkerhetspolicyer fra din sertifiseringsleverandør, inkludert støtte for multifaktorautentisering (MFA).
Sikker bruk av agent forwarding.
I SSH tillater agent forwarding at en ekstern vert kan få tilgang til SSH-agenten på din lokale enhet. Når du bruker SSH med aktivert agent forwarding (vanligvis via ssh -A), vil forbindelsen ha to kanaler: din interaktive økt og kanalen for agent forwarding. Gjennom denne kanalen kobles Unix-socketen, opprettet av din lokale SSH-agent, til den eksterne verten. Dette er en risikabel metode, ettersom en bruker med root-tilgang på det eksterne enheten kan få tilgang til din lokale SSH-agent og potensielt utgi seg for deg på nett. Ved å bruke standard SSH-agent fra Open SSH-pakken, vil du ikke engang vite at det har skjedd. Å ha en U2F-nøkkel (eller Sekey) vil hjelpe deg med å effektivt blokkere alle forsøk på å bruke din SSH-agent utenfra.
Selv med denne sikkerhetstiltakene er det en god idé å bruke agent forwarding så sjeldent som mulig. Ikke bruk det i hver økt – bruk agent forwarding kun når du er sikker på at det er nødvendig for den nåværende økten.
Avslutte en hengt økt.
Nettverksavbrudd, ukontrollert programatferd, eller en kontrollsekvens som blokkerer tastaturinngang – alle disse kan være årsaker til at en SSH-økt blir brutt.
Du kan avslutte en hengt økt på flere måter:
- Automatisk avslutte ved nettverksavbrudd. Du må legge til følgende i din .ssh/config:
ServerAliveInterval 5 ServerAliveCountMax 1ssh vil sende echo til den eksterne verten hvert ServerAliveInterval-sekund for å sjekke forbindelsen. Dersom mer enn ServerAliveCountMax echo ikke får svar, vil ssh avslutte forbindelsen på grunn av tidsavbrudd og gå ut av økten.
- Kutte seg ut av sesjonen. SSH bruker som standard tegnet ~ (tilde) som kontrolltegn. Kommandoen ~. lukker den åpne forbindelsen og tar deg tilbake til terminalen. (Kontrollsekvenser kan kun tastes inn på en ny linje.) Kommandoen ~? vil vise en fullstendig liste over tilgjengelige kommandoer i denne sesjonen. Vær oppmerksom på at for å skrive tegnet ~ på internasjonale tastaturer, kan det være nødvendig å trykke på ~-tasten to ganger.
Hvorfor skjer det i det hele tatt hengende sesjoner? På tiden da internett ble opprettet, flyttet sjelden datamaskiner seg fra et sted til et annet. Når du bruker bærbare datamaskiner og bytter mellom flere IPv4 WiFi-nettverk, endres IP-adressen din. Siden SSH er avhengig av TCP-forbindelser, som igjen er avhengige av et sluttpunkt med en stabil IP-adresse, mister SSH-forbindelsene dine sokkeldeskriptoren hver gang du bytter nettverk, og går faktisk tapt. Når IP-adressen din endres, trenger nettverksstakken din tid til å oppdage tapet av skriptoren. Når nettverksproblemer oppstår, ønsker vi ikke at en av nodene i TCP-forbindelsen skal bryte forbindelsen for tidlig. Derfor vil protokollen prøve å sende dataene på nytt flere ganger før den til slutt gir opp. I mellomtiden vil sesjonen din se ut til å ha hengt seg i terminalen. IPv6 legger til flere mobilitetsrelaterte funksjoner som lar enheten bevare hjemmeadressen under nettverksbytte. Kanskje vil dette en dag ikke være et så stort problem.
Hvordan holde en konstant terminal åpen på en ekstern vert
Det finnes to forskjellige tilnærminger for å holde forbindelsen oppe når du bytter mellom ulike nettverk eller ønsker å koble fra en stund.
1. Bruke eller
Hvis du virkelig trenger en forbindelse som ikke faller ned, selv om du bytter mellom nettverk, kan du bruke Mosh-mobilskallet. Dette er et sikkert skall som først bruker SSH-håndtrykk, og deretter bytter til sin egen krypterte kanal for hele sesjonen. Slik oppretter Mosh en separat, veldig robust og sikker kanal som kan motstå både internettavbrudd og endringer i IP-adressen til laptopen din, samt alvorlige nettverksbrudd, og mye mer, takket være magien av UDP-forbindelser og Mosh-sync-protokollen.
For å bruke Mosh må du installere det både på klienten og serveren, og åpne portene 60000-61000 for usammenhengende UDP-trafikk til din eksterne vert. For fremtidige forbindelser trenger du bare å bruke mosh bruker@server.
Mosh opererer på skjerm- og tastetrykknivå, noe som gir det en rekke fordeler i forhold til å videresende den binære strømmingen av standard inndata og utdata mellom klienten og SSH-serveren. Hvis vi må synkronisere bare skjermer og tastetrykk, blir det mye lettere å gjenopprette en avbrutt forbindelse senere. Mens SSH vil buffer og sende alt som har skjedd, er det tilstrekkelig for Mosh å buffer tastetrykkene og synkronisere det siste bildet av terminalvinduet med klienten.
2. Bruke tmux
Hvis du ønsker å «komme og gå som du vil» og holde en terminaløkt på en ekstern vert, bruk tmux. Jeg elsker tmux og bruker det hele tiden. Hvis SSH-forbindelsen din er avbrutt, er det tilstrekkelig å koble til igjen og skrive tmux attach. I tillegg har det fantastiske funksjoner som innebygde terminalfaner og paneler, likt fanene i iOS-terminalen, og muligheten til å dele terminaler med andre.
Noen liker å pynte tmux med Byobu, et program som betydelig forbedrer brukervennligheten av tmux og legger til mange hurtigtaster. Byobu følger med Ubuntu og er lett å installere på Mac via Homebrew.
Deling av ekstern terminaløkt med en venn
Noen ganger, når du feilsøker komplekse problemer på serverne dine, kan du føle behovet for å dele en SSH-økt med noen som ikke er i rommet med deg. tmux er perfekt for denne oppgaven! Det er nok å gjøre bare noen få trinn:
- Sørg for at tmux er installert på din bastion-node, eller på en annen server du skal jobbe med.
- Dere må begge koble til enheten via SSH med én og samme konto.
- En av dere må starte tmux for å begynne en tmux-økt.
- Den andre må starte tmux attach
- Voilà! Dere har en delt terminal.
Hvis du ønsker mer avanserte flerbrukers tmux-økter, prøv tmate, som er en fork av tmux som forenkler deling av terminaløkter betydelig.
Kilde: habr.com
