SSH | |
---|---|
Navn | Sikker Shell |
Niveau (ifølge OSI-modellen ) | Anvendt |
Familie | TCP/IP |
Port/ID | 22/ TCP |
Formål med protokollen | Fjernadgang |
Specifikation | RFC 4251 |
Vigtigste implementeringer (klienter) | OpenSSH , PuTTY / KitTY , SecureCRT , Xshell |
Kerneimplementeringer ( servere ) | ÅbnSSH |
Mediefiler på Wikimedia Commons |
SSH ( eng. Security Shell - "secure shell" [ 1 ] ) er en applikationslagnetværksprotokol, der giver dig mulighed for at fjernstyre operativsystemet og tunnel TCP - forbindelser (for eksempel for at overføre filer). Ligner funktionaliteten til Telnet- og rlogin-protokollerne , men krypterer i modsætning til dem al trafik, inklusive overførte adgangskoder . SSH tillader et valg af forskellige krypteringsalgoritmer. SSH - klienter og SSH - servere er tilgængelige for de fleste netværksoperativsystemer.
SSH giver dig mulighed for sikkert at overføre næsten enhver anden netværksprotokol i et usikkert miljø . Du kan således ikke kun arbejde eksternt på en computer gennem en kommandoskal , men også transmittere en lydstrøm eller video over en krypteret kanal (for eksempel fra et webcam ) [2] . SSH kan også bruge komprimering af transmitterede data til efterfølgende kryptering, hvilket er praktisk, for eksempel til fjernstart af X Window System- klienter .
De fleste hostingudbydere giver kunderne SSH - adgang til deres hjemmemappe mod et gebyr. Dette kan være praktisk både til at arbejde på kommandolinjen og til fjernstart af programmer (inklusive grafiske applikationer).
SSH er en applikationslagsprotokol. SSH-serveren lytter typisk efter forbindelser på TCP-port 22. SSH-2-protokolspecifikationen er i RFC 4251 . Til servergodkendelse bruger SSH en partgodkendelsesprotokol baseret på RSA eller DSA digital signaturalgoritmer , men adgangskodegodkendelse (bagudkompatibel tilstand med Telnet ) og endda værts-IP-adresse (bagudkompatibel tilstand med rlogin ) er også tilladt.
Diffie-Hellman (DH) algoritmen bruges til at skabe en delt hemmelighed (sessionsnøgle ). De transmitterede data krypteres ved hjælp af symmetrisk kryptering , AES , Blowfish eller 3DES algoritmer . Dataoverførselsintegriteten kontrolleres ved hjælp af CRC32 i SSH1 eller HMAC - SHA1 / HMAC - MD5 i SSH2.
For at komprimere de krypterede data kan LempelZiv ( LZ77 ) algoritmen bruges, som giver samme niveau af komprimering som ZIP arkiver . SSH-komprimering er kun aktiveret efter anmodning fra klienten og bruges sjældent i praksis.
Version 1.x
I 1995 udviklede Tatu Ylönen , en forsker ved Helsinki University of Technology, Finland, den første version af protokollen (nu kaldet SSH-1), udløst af et password mining-angreb på hans universitetsnetværk. Målet med SSH var at erstatte de tidligere protokoller rlogin, TELNET, FTP [16] og rsh, som ikke gav stærk autentificering og privatliv. Ylönen udgav sin implementering som gratis software i juli 1995, og værktøjet vandt hurtigt popularitet. Ved udgangen af 1995 var SSH-brugerbasen vokset til 20.000 brugere i halvtreds lande.
I december 1995 grundlagde Ylönen SSH Communications Security for at fremme og udvikle SSH. Den originale version af SSH-softwaren brugte forskellige stykker gratis software såsom GNU libgmp, men senere versioner udgivet af SSH Communications Security har udviklet sig til stadig mere proprietær software.
Det blev anslået, at i 2000 var antallet af brugere vokset til 2 millioner.
Version 2.x
"Secsh" var det officielle navn på Internet Engineering Task Force (IETF) for IETF-arbejdsgruppen, der var ansvarlig for version 2 af SSH-protokollen. I 2006 blev en opdateret version af SSH-2-protokollen vedtaget som standard. Denne version er inkompatibel med SSH-1. SSH-2 har både sikkerhed og forbedrede funktioner i forhold til SSH-1. For eksempel opnås bedre sikkerhed gennem Diffie-Hellman nøgleudveksling og stærk integritetskontrol med meddelelsesgodkendelseskoder. Nye SSH-2-funktioner inkluderer muligheden for at starte et hvilket som helst antal shell-sessioner over en enkelt SSH-forbindelse. På grund af SSH-2's overlegenhed og popularitet i forhold til SSH-1, understøtter nogle implementeringer såsom libssh (v0.8.0+), Lsh og Dropbear kun SSH-2-protokollen.
Version 1.99
I januar 2006, længe efter at version 2.1 blev oprettet, specificerede RFC 4253, at en SSH-server, der understøtter både 2.0 og tidligere versioner af SSH, skulle identificere sin prototypeversion som 1.99. Dette er ikke en opdateret version, men en metode til at bestemme bagudkompatibilitet.
OpenSSH og OSSH
I 1999 vendte udviklerne, som ønskede en gratis version af softwaren, tilbage til den gamle udgivelse 1.2.12 af det originale SSH-program, som sidst blev udgivet under en open source-licens. Bjorn Grönwalls OSSH blev efterfølgende udviklet ud fra denne kodebase. Kort efter delte OpenBSD -udviklerne grønlandskoden og arbejdede meget på den, og skabte OpenSSH , som blev leveret med 2.6-versionen af OpenBSD. Fra denne version blev der dannet en "portabilitets"-gren for at portere OpenSSH til andre operativsystemer.
Fra 2005 var OpenSSH den mest populære implementering af SSH, inkluderet som standard på et stort antal operativsystemer. OSSH er udfaset i mellemtiden. OpenSSH er fortsat understøttet og understøtter SSH-2-protokollen, hvilket dropper understøttelse af SSH-1 fra kodebasen med udgivelsen af OpenSSH 7.6 .
Den første version af protokollen, SSH-1, blev udviklet i 1995 af forsker Tatu Ulönen fra Helsinki University of Technology ( Finland ). SSH-1 blev skrevet til at være mere privat end rlogin-, telnet- og rsh-protokollerne. I 1996 blev der udviklet en mere sikker version af protokollen, SSH-2, som er inkompatibel med SSH-1. Protokollen vandt endnu mere popularitet, og i 2000 havde den omkring to millioner brugere. På nuværende tidspunkt refererer udtrykket "SSH" normalt til SSH-2, da den første version af protokollen på grund af betydelige mangler nu praktisk talt ikke bruges.
I 2006 blev protokollen godkendt af IETF -arbejdsgruppen som en internetstandard.
To implementeringer af SSH er almindelige: en privat kommerciel og en gratis. Den gratis implementering hedder OpenSSH. I 2006 brugte 80 % af computere på internettet OpenSSH. En privat implementering udvikles af SSH Communications Security, et helejet datterselskab af Tectia [3] , og er gratis til ikke-kommerciel brug. Disse implementeringer indeholder næsten det samme sæt instruktioner.
SSH-1-protokollen, i modsætning til telnet -protokollen , er modstandsdygtig over for trafik-sniffing-angreb (" sniffing "), men er ikke modstandsdygtig over for man-in-the-middle- angreb . SSH-2-protokollen er også modstandsdygtig over for angreb ved at deltage i midten ( engelsk session hijacking ), da det er umuligt at deltage i en allerede etableret session eller opsnappe den.
For at forhindre man-in-the-middle- angreb viser klientsoftwaren brugeren et nøglefingeraftryk , når der oprettes forbindelse til en vært , hvis nøgle endnu ikke er kendt af klienten . Det anbefales omhyggeligt at sammenligne "nøglecastet" vist af klientsoftwaren med servernøglecastet, fortrinsvis opnået via pålidelige kommunikationskanaler eller personligt.
SSH-understøttelse er tilgængelig på alle UNIX - lignende systemer, og de fleste af dem har en ssh-klient og -server som standardværktøjer. Der er også mange implementeringer af SSH-klienter til ikke-UNIX-operativsystemer. Protokollen vandt stor popularitet efter den udbredte udvikling af trafikanalysatorer og metoder til at forstyrre driften af lokale netværk, som et alternativ til den usikre Telnet -protokol til styring af vigtige noder.
SSH kræver en SSH-server og en SSH-klient. Serveren lytter efter forbindelser fra klientmaskiner og, når en forbindelse er etableret, udfører den autentificering , hvorefter den begynder at servicere klienten. Klienten bruges til at logge ind på en ekstern maskine og udføre kommandoer.
For at oprette forbindelse skal serveren og klienten oprette nøglepar – offentlige og private – og udveksle offentlige nøgler. Normalt bruges også en adgangskode.
Kommandoen til at oprette forbindelse til en lokal SSH-server fra GNU/Linux- eller FreeBSD-kommandolinjen for pacify-brugeren (serveren lytter på den ikke-standardiserede port 30000):
$ ssh -p 30000 pacify@127.0.0.1Nøglepargenerering (i UNIX-lignende OS) udføres af kommandoen
$ ssh-keygenGenerering af et par SSH-2 RSA-nøgler med en længde på 4096 bit af puttygen under UNIX-lignende OS:
$ puttygen -t rsa -b 4096 -o prøveNogle klienter, såsom PuTTY, har også en grafisk brugergrænseflade .
For at bruge SSH i Python er der moduler som python-paramiko og python-twisted-conch.
En SSH-tunnel er en tunnel skabt over en SSH-forbindelse og bruges til at kryptere de tunnelerede data. Bruges til at sikre datatransmission på internettet ( IPsec har et lignende formål ). Når den videresendes gennem en SSH-tunnel, krypteres ukrypteret trafik af enhver protokol i den ene ende af SSH-forbindelsen og dekrypteres i den anden.
Den praktiske implementering kan ske på flere måder:
I dette tilfælde er Jabber-klienten konfigureret til at oprette forbindelse til port 4430 på localhost-serveren (hvis ssh-klienten kører på samme maskine som Jabber-klienten).
For at oprette en ssh-tunnel skal du bruge en maskine med en kørende ssh-server og adgang til jabber.example.com. Denne konfiguration kan bruges, hvis adgang til jabber.example.com fra den lokale maskine er blokeret af en firewall, men der er adgang til en eller anden ssh-server, der ikke har internetadgangsbegrænsninger.
TCP / IP-protokoller efter lag af OSI-modellen | Grundlæggende|
---|---|
Fysisk | |
kanaliseret | |
netværk | |
Transportere | |
session | |
Repræsentation | |
Anvendt | |
Andet anvendt | |
Liste over TCP- og UDP-porte |
URI- ordninger | |
---|---|
Officiel | |
uofficiel |