SSH, eller Secure Shell, är ett nätverksprotokoll som möjliggör säker anslutning till fjärrdatorer.
Datorer kommunicerar via nätverk, vilket kräver standardiserade regler. Nätverksexperter utvecklade därför protokoll som Telnet, vilket ger användare möjlighet att kontrollera andra datorer.
Telnet har dock allvarliga säkerhetsbrister. Data som överförs kan enkelt avlyssnas. Som svar på detta introducerades SSH i mitten av 1990-talet som en mer säker ersättare till Telnet.
Om du är mjukvaruutvecklare eller systemadministratör har du förmodligen använt SSH. Om inte, är det dags att lära sig, eftersom det är en ovärderlig färdighet.
Vad är egentligen SSH?
SSH, förkortning av Secure Shell eller Secure Socket Shell, är ett nätverksprotokoll som skapar en säker kanal för kommunikation med fjärrdatorer, oftast fjärrservrar.
Detta protokoll använder stark kryptering och är flitigt använt av nätverksadministratörer och utvecklare. Det används för fjärradministration av system, applikationer, filöverföring och körning av kommandon.
Varför behövs SSH?
SSH uppfanns 1995 för att adressera säkerhetsproblem i äldre protokoll för fjärråtkomst, såsom rlogin, rsh, och Telnet.
Låt oss granska Telnet, ett verktyg från 1969 som möjliggör enkel kommandoradsbaserad åtkomst till fjärrservrar. Användare kan via Telnet skicka kommandon till en server och styra den som om de satt direkt vid den. Telnet sänder data i klartext.
Kommandona kan inkludera programkörning, mapphantering, filhantering samt start och stopp av tjänster.
Ett problem med nätverkskommunikation är att data som sänds passerar många nätverkspunkter. Detta skapar möjligheter för obehörig åtkomst och manipulation av överförd information.
I tidiga nätverk var säkerhet inte lika prioriterat och kommunikation skedde i klartext, vilket gjorde det enkelt att avlyssna och läsa okrypterad data.
Klartextprotokoll är riskabla och olämpliga för känslig data, såsom lösenord. SSH erbjuder därför ett mycket säkrare alternativ för fjärråtkomst jämfört med äldre protokoll.
Hur fungerar SSH?
SSH använder en klient-serverarkitektur. En SSH-klient ansluter till en SSH-server. Som standard lyssnar SSH-servern på TCP-port 22 (detta kan ändras av säkerhetsskäl).
Protokollet använder kryptografi med publika nycklar för autentisering mellan klient och server. Symmetrisk kryptering och hash-algoritmer används för datautbyte för att garantera integritet och autenticitet.
Linux är ett vanligt operativsystem för fjärrservrar på grund av dess stabilitet och säkerhet. Många Linux-servrar kan fungera i åratal utan omstarter eller allvarliga fel.
De flesta SSH-sessioner innefattar två grundläggande steg:
- Autentisering
- Kommandoexekvering
SSH-servrar har olika metoder för att autentisera klienter.
Två vanliga metoder är:
Lösenordsbaserad autentisering är den vanliga metoden för klienter med OpenSSH. Det är enkelt, men inte det säkraste alternativet.
Trots att lösenord skickas krypterat, är det inte helt skyddat mot brute force-attacker.
Nyckelbaserad autentisering är säkrare. Den använder SSH-nyckelpar för att skapa en säker anslutning.
Efter lyckad autentisering etableras en säker anslutning.
Hur man ansluter till en fjärrserver med SSH
Mac- och Linux-användare kan använda terminalen för SSH-kommandon, eftersom OpenSSH är förinstallerat.
Windows-användare behöver installera en terminalemulator, till exempel Putty, för att använda SSH.
För att ansluta till en fjärrserver via SSH behövs minst två saker:
Grundläggande syntax för SSH-kommandot:
$ ssh <användarnamn> @ <värd> -p <portnummer>
Användarnamnet är användarnamnet på fjärrmaskinen (inte din lokala dator) och värden är serverns IP-adress eller domännamn.
Låt oss använda OverTheWire som ett exempel. Det är en webbplats med utmaningar (wargames).
Vi ansluter till bandit-utmaningen, som lär ut SSH-inloggning.
Referenser:
Användarnamn och lösenord: bandit0
Värd och port: bandit.labs.overthewire.org, 2220
När du anger följande kommando och trycker på enter:
$ ssh [email protected] -p 2220
Du kommer att bli ombedd att ange lösenordet. Ange lösenordet och tryck enter:
Om lösenordet är korrekt, kommer du att vara inloggad och terminalen kommer att se ut som på bilden ovan.
Nu kan du använda fjärrmaskinens terminal för att utföra kommandon.
För att avsluta SSH-sessionen skriver du kommandot exit:
$ exit
Du får meddelandet ”Anslutningen stängd” när sessionen avslutas.
Sammanfattning
SSH:s popularitet beror på att all kommunikation är krypterad.
Många anser att SSH är komplicerat, men grunderna är enkla att förstå. Du har nu en grundläggande förståelse för SSH, hur det fungerar och dess betydelse för säker kommunikation.
Utforska vidare för att lära dig mer om systemadministration.