I den hÀr artikeln har vi samlat vÄra bÀsta tips för att anvÀnda SSH pÄ ett mer effektivt sÀtt. HÀr fÄr du veta hur:
- LĂ€gga till en andra faktor till SSH-inloggningen
- SÀkert anvÀnda agent forwarding
- Avsluta en hÀngande SSH-session
- Spara en permanent terminal öppen
- Dela en fjÀrrterminalsession med en vÀn (utan Zoom!)
LĂ€gga till en andra faktor till din SSH
Du kan lÀgga till en andra autentiseringsfaktor till dina SSH-anslutningar pÄ fem olika sÀtt:
- Uppdatera din OpenSSH och anvÀnda en krypteringsnyckel. I februari 2020 tillade OpenSSH stöd för FIDO U2F (Universal Second Factor) krypteringsnycklar. Detta Àr en fantastisk ny funktion, men det finns en fÀlla: endast de klienter och servrar som har uppdaterats till version OpenSSH 8.2 eller högre kan anvÀnda krypteringsnycklar, eftersom februari-uppdateringen inför nya typer av nycklar för dem. Med kommandot
ssh âVkan du kontrollera klientversionen av SSH, och serverversionen med kommandotnc [servername] 22
Februari-versionen tillade tvĂ„ nya typer av nycklar â ecdsa-sk och ed25519-sk (tillsammans med motsvarande certifikat). För att generera en nyckelfil rĂ€cker det med att sĂ€tta in din krypteringsnyckel och köra kommandot:$ ssh-keygen -t ecdsa-sk -f ~\/ssh/id_ecdsa_skDet kommer att skapa en offentlig och sekret nyckel och koppla dem till din U2F-enhet. Syftet med den hemliga nyckeln pĂ„ U2F-enheten Ă€r att avkryptera den hemliga nyckeldeskriptorin pĂ„ disken med den krypteringsnyckeln aktiverad.
Dessutom kan du som en andra faktor ge en kodfrÄga för dina nycklar.
Resident key Àr en annan typ av nyckel -sk-nycklar som stöds av OpenSSH. Med denna metod lagras nyckeldeskriptorn pÄ U2F-enheten, vilket lÄter dig anvÀnda den med krypteringsnyckeln vid behov. En resident key kan skapas med kommandot:
$ ssh-keygen -t ecdsa-sk -O resident -f ~\/ssh/id_ecdsa_skSedan, för att ÄterlÀmna deskriptoren i minnet pÄ en ny enhet, sÀtt in krypteringsnyckeln och kör kommandot:
$ ssh-add -KVid anslutning till vÀrden mÄste du fortfarande aktivera krypteringsnyckeln.
- AnvÀnda PIV+PKCS11 och Yubikey. För att ansluta till enheter med tidigare versioner av SSHD med hjÀlp av en krypteringsnyckel behövs en annan metod. Det finns en guide frÄn Yubico för att anvÀnda U2F+SSH med PIV/PKCS11 (eng). Detta Àr inte samma sak som FIDO U2F, och Àven om metoden fungerar krÀver det mycket arbete att förstÄ vilken magi som driver den.
- AnvÀnda en personlig yubikey-agent ssh-agent. Filippo Valsorda skrev en SSH-agent för Yubikeys. Den Àr helt ny och innehÄller ett minimum av funktioner.
- AnvÀnda Touch ID och sekey. Sekey Àr en öppen kÀllkod SSH-agent som lagrar hemliga nycklar i Mac:ens skyddade enclava och gör det möjligt att anvÀnda Touch ID för Ätkomstfunktioner.
- AnvÀnda Single Sign On SSH. Jag har skrivit en handledning för att hjÀlpa till med att stÀlla in denna metod (eng). En av fördelarna med single sign on SSH Àr möjligheten att anvÀnda sÀkerhetspolicyn frÄn din certifikatleverantör - inklusive stöd för multifaktorsautentisering (MFA).
SÀker anvÀndning av agent forwarding
I SSH tillÄter agent forwarding att en fjÀrrenhet fÄr tillgÄng till SSH-agenten pÄ din lokala enhet. NÀr du anvÀnder SSH med aktiverad agent forwarding (vanligtvis via ssh -A) kommer det att finnas tvÄ kanaler i anslutningen: din interaktiva session och en kanal för agent forwarding. Genom denna kanal kopplar den Unix-socket som skapats av din lokala SSH-agent till den fjÀrrenheten. Detta Àr en riskfylld metod, eftersom en anvÀndare med root-behörighet pÄ den fjÀrrenheten kan fÄ tillgÄng till din lokala SSH-agent och potentiellt utge sig för att vara dig i nÀtverket. Genom att anvÀnda den standardiserade SSH-agenten i Open SSH-paketet visar du inte ens att det hÀnder. Att ha en U2F-nyckel (eller Sekey) kan hjÀlpa dig att effektivt blockera alla försök att utnyttja din SSH-agent utifrÄn.
Ăven med denna försiktighetsĂ„tgĂ€rd kan det vara en bra idĂ© att anvĂ€nda agent forwarding sĂ„ sĂ€llan som möjligt. AnvĂ€nd det inte vid varje session - anvĂ€nd agent forwarding endast nĂ€r du Ă€r sĂ€ker pĂ„ dess nödvĂ€ndighet för den aktuella sessionen.
Avsluta en fryst session
NÀtverksavbrott, okontrollerat programbeteende eller en kontrollsekvens som blockerar tangentbordsinmatning Àr alla möjliga orsaker till att en SSH-session kopplas bort.
Du kan avsluta en fryst session pÄ flera sÀtt:
- Automatiskt avsluta vid nÀtverksavbrott. Du mÄste lÀgga till följande i din .ssh/config:
ServerAliveInterval 5 ServerAliveCountMax 1ssh kommer att skicka echo till den fjÀrrenheten var femte ServerAliveInterval sekunder för att kontrollera anslutningen. Om mer Àn ServerAliveCountMax echo inte fÄr nÄgot svar kommer ssh att avsluta anslutningen efter timeout och avsluta sessionen.
- Koppla bort frÄn sessionen. Som standard anvÀnder ssh tecknet ~ (tilde) som en kontrolltecken. Kommandot ~. stÀnger den öppna anslutningen och Äterför dig till terminalen. (Kontrollsekvenser kan endast skrivas in pÄ en ny rad.) Kommandot ~? visar en fullstÀndig lista över tillgÀngliga kommandon i denna session. Observera att det kan krÀvas att trycka pÄ ~ tvÄ gÄnger pÄ internationella tangentbord för att skriva detta tecken.
Varför intrÀffar det överhuvudtaget hÀngande sessioner? Under Internetets tidiga dagar flyttades datorer sÀllan. NÀr du anvÀnder bÀrbara datorer och vÀxlar mellan olika IPv4 WiFi-nÀtverk Àndras din IP-adress. Eftersom SSH Àr beroende av TCP-anslutningar, som Ä sin sida Àr beroende av en Àndpunkt med en stabil IP-adress, tappar dina SSH-anslutningar varje gÄng du vÀxlar mellan nÀtverk en socketdescriptor och förloras faktiskt. NÀr din IP-adress Àndras tar det en stund för din nÀtverksstack att upptÀcka den förlorade deskriptor. NÀr nÀtverksproblem uppstÄr vill vi inte att en av noderna i TCP-anslutningen ska stÀnga den för tidigt. DÀrför kommer protokollet att försöka Äteröverföra data flera gÄnger innan det slutligen ger upp. Under tiden kommer sessionen i din terminal att se ut som den har stannat. IPv6 tillför flera mobilitetsrelaterade funktioner som gör det möjligt för enheten att behÄlla sin hemadress under nÀtverksbyten. Kanske kommer detta en dag inte att vara ett stort problem.
Hur man hÄller en konstant terminal öppen pÄ en fjÀrrnod
Det finns tvÄ olika metoder för hur man kan behÄlla anslutningen nÀr man vÀxlar mellan olika nÀtverk eller vid önskan att koppla ifrÄn en stund.
1. AnvÀnd eller
Om du verkligen behöver en anslutning som inte bryts, Àven nÀr du vÀxlar mellan nÀtverk, anvÀnd den mobila skalen Mosh. Det Àr ett sÀkert skal som först anvÀnder SSH-handshake och sedan vÀxlar till sin egen krypterade kanal under hela sessionen. PÄ sÄ sÀtt skapar Mosh en separat, mycket robust och sÀker kanal som kan klara av bÄde internetavbrott och Àndringar av din bÀrbara dators IP-adress, samt allvarliga nÀtverksavbrott och mycket mer, tack vare magin i UDP-anslutningar och den synchronisering som Mosh-protokollet tillÀmpar.
För att anvÀnda Mosh behöver du installera det bÄde pÄ klienten och servern, och öppna portarna 60000-61000 för osÀker UDP-trafik till din fjÀrrvÀrd. I framtiden rÀcker det att anvÀnda mosh user@server.
Mosh arbetar pÄ nivÄn av skÀrmar och tangenttryckningar, vilket ger det flera fördelar framför att vidarebefordra en binÀr ström av standard indatan och utgÄngen mellan klienten och SSH-servern. Om vi behöver synkronisera endast skÀrmar och tangenttryckningar blir det mycket enklare att ÄterfÄ en avbruten anslutning senare. Medan SSH buffrar och skickar allt som hÀnder, rÀcker det för Mosh att bara buffra tangenttryckningar och synkronisera den senaste ramen av terminalfönstret med klienten.
2. AnvÀnda tmux
Om du vill kunna "komma och gÄ nÀr du vill" och behÄlla en terminalsession pÄ den fjÀrrnod, anvÀnd tmux. Jag Àlskar tmux och anvÀnder det alltid. Om din SSH-anslutning bryts, Àr det tillrÀckligt att bara Äteransluta och skriva tmux attach. Dessutom har det fantastiska funktioner som in-terminalflikar och paneler, liknande flikarna i iOS-terminalen, samt möjligheten att dela terminaler med andra.
MÄnga gillar att försköna sin tmux med Byobu, ett paket som avsevÀrt förbÀttrar anvÀndarvÀnligheten av tmux och lÀgger till mÄnga kortkommandon. Byobu följer med Ubuntu, och det Àr enkelt att installera pÄ Mac via Homebrew.
Att dela en fjÀrrterminalsession med en vÀn
Ibland, nÀr man felsöker komplexa problem pÄ sina servrar, kan man kÀnna för att dela en SSH-session med nÄgon som inte Àr i samma rum som en sjÀlv. tmux Àr perfekt för sÄdana uppgifter! Du behöver bara följa nÄgra steg:
- Se till att tmux Àr installerat pÄ din bastionnod eller pÄ en annan server som du planerar att arbeta med.
- BÄda mÄste ansluta via SSH till enheten med hjÀlp av ett gemensamt konto.
- En av er mÄste starta tmux för att inleda tmux-sessionen.
- Den andra mÄste köra tmux attach.
- VoilĂ ! Ni har en gemensam terminal.
Om du vill ha mer avancerade fleranvÀndarsessioner i tmux, prova tmate, en fork av tmux som gör det mycket enklare att ha gemensamma terminalsessioner.
KĂ€lla: habr.com
