Secure Shell eliSSH onsalattuuntietoliikenteeseen tarkoitettuprotokolla. Yleisin SSH:n käyttötapa on ottaa etäyhteys SSH-asiakasohjelmalla SSH-palvelimeen päästäkseen käyttämään toista konetta merkkipohjaisen konsolin kautta. SSH:lla voidaan myös suojataFTP-,HTTP- tai muuta liikennettä, joka toimii samalla tasolla.Rlogin,telnet,rsh,rcp jardist suositellaan korvattavaksi SSH:lla, koska näiden yhteydenottotapojen suojaustaso on varsin heikko.
SSH-protokollan ensimmäisen version (SSH1) kehitti vuonna 1995 tekniikan lisensiaattiTatu Ylönen, joka työskenteli tuolloin tutkijanateknillisessä korkeakoulussa. Sittemmin hän perustiSSH Communications Security -nimisen yrityksen.[1] Toisen version (SSH2) kehittiIETF, jota työryhmä kutsui nimellä "Secsh" kehitysvaiheessa. SSH2 julkaistiin vuonna 1998. RFC-dokumentit on julkaistu vuonna 2006, jonka jälkeen Secsh-työryhmä lopetti toimintansa.[2]
Vuonna 1999OpenBSD-projektin yhteydessä alettiin kehittää vapaata versiota SSH:ta.OpenSSH perustuu Tatu Ylösen ssh 1.2.12 -julkaisuun, joka oli viimeinen vapaalla lisensillä julkaistu.[3]
SSH-asiakasohjelma kuuluu nykyisin useimpienUnix-sukuisten käyttöjärjestelmien oletusasennukseen, ja se on yleensä käytettävissä komentoriviltä komennollassh.Windows-koneilla suosittu SSH-etäkäyttöohjelma onPuTTY.
SSH-protokollasta on kaksi versiota, SSH1 ja SSH2, jotka eroavat monin tavoin.[4][5] Eräs ero johtuuRSA-algoritmin patenteista, joka on sittemmin vanhentunut.[6][5] SSH2 käyttää useampaa protokollaa eri tarkoituksiin kun SSH1:ssä on yksi monoliittinen protokolla.[5]
SSH1:n käyttämäCRC-tarkistussumma todettiin haavoittuvaksi ja se on SSH2:ssa korvattuviestin todennuskoodialgoritmien (MAC, Message Authentication Code) käytöllä.[6][4]
SSH1 tukee vain RSA-algoritmia julkisen avaimen autentikaatioon kun SSH2:ssa vaihtoehtoja ovat myösDSA jaOpenPGP. LisäksiRhosts on poistettu turvattomana. SSH2 käyttääDiffie-Hellman avaimenvaihtoa palvelinavaimen sijaan.[4]
SSH2:ssa istuntoavaimet voi vaihtaa.[5]
DSA on OpenSSH:ssa oletuksena pois käytöstä vuodesta 2015 lähtien ja aikomus on poistaa se kokonaan vuoteen 2025 mennessä. Syynä tähän on DSA:n heikkous, mutta SSH2:n dokumentaatiossa se on ollut ainoa pakollinen algoritmi johtuen muiden algoritmien patenteista. RSA on laajalti käytössä, mutta uutta kehitystä ovatECDSA jaEdDSA, joissa on suorituskykyyn ja turvallisuuteen liittyviä parannuksia.[7]
Yhteyttä muodostaessa SSH-asiakas pyytää käyttäjää tarkistamaan palvelimen identiteetin ("isäntäavain" eli "host key") kun yhteys muodostetaan ensimmäistä kertaa. Tarkistus tehdään "sormenjäljen" perusteella, joka on palvelimen julkisesta avaimesta muodostettutiiviste (esimerkiksiSHA-256). Koska ihmiselle tarkistus on vaivalloista ja virheherkkää, tiedot voidaan tallettaa tunnettujen palvelimien listaan tai ne voidaan jakaaDNSSECin avulla. Kuitenkin käyttäjä luultavaksi hyväksyy avaimen sormenjäljen sitä tarkistamatta,[8] joten käytännössä SSH-toimii "trust on first use" (TOFU) -periaatteella, jossa palvelimen sertifikaatti hyväksytään ensimmäistä kertaa sillä käydessä ja käyttäjää varoitetaan jos se muuttuu.
Käyttäjä tunnistautuu palvelimelle tyypillisestisalasanalla, mutta näiden heikkouksien vuoksi on parempi käyttää avaimia, jolloin käyttäjän ei tarvitse syöttää salasanoja. Sallitut avaimet voidaan tallettaa käyttäjäkohtaisesti palvelimella. Palvelimen avain ei muutu usein, mutta se voi muuttua palvelimen muutoksien tai domain-nimen muutoksen vuoksi. Myös käyttäjät voivat tarvita uusia avaimia koska ne voidaan julkaista vahingossa tai ne voivat hukkua.[8]
OpenSSH tukee SSH-sertifikaattia, joka sisältää julkisen SSH-avaimen sekä avaimeen liittyvää metatietoa, jotka luotettava taho allekirjoittaa kryptografisesti. Sertifikaattia voidaan käyttää julkisen avaimen sijaan kun muodostetaan yhteyttä, jolloin ei tarvitse käsin tarkistaa avainta.[8]
Suojatun liikenteen yksi tärkeimmistä periaatteista on, että mahdollisimman monessa paikassa käytetään mahdollisimman monta erityyppistä algoritmia. Näinkrakkeri ei yhden liikenteen suojaukset murrettuaan osaa purkaa samalla keinolla muita yhteyksiä. Siksi SSH-ohjelmissa on hyvin monia käytettävissä oleviaalgoritmeja. Vaikka tieto, jota voisi kuljettaa verkon yli, ei olisikaan arkaluontoista, niin on silti suositeltavaa käyttää salattuja yhteyksiä, koska näin salasanakin säilyy suojattuna toisin kuin telnet-liikenteessä ja suojatun liikenteen määrä verkossa lisääntyy. Tämä hankaloittaa osittain krakkereita erottamasta arkaluontoista tietoa triviaalista informaatiosta.
Vaikka SSH luokitellaan turvalliseksi, siihen liittyy eräitä haavoittuvuuksia, joita voidaan hyödyntää hyökkäyksissä. Ensimmäistä yhteyttä kahden pisteen välille muodostaessa vaihdetaan salausavaimet hyvin heikon salauksen voimin (ks.Potenssiinkorotusalgoritmi). Joskrakkeri käyttäämies välissä -tekniikkaa, niin hän voi lukea kahden pisteen välille muodostettavat yhteydet. Tämä ongelma voidaan välttää lähettämällä salausavaimet perinteisessä postissa tai kuljettamalla avaimet taskussa pisteiden välillä. On ensiarvoisen tärkeää huomioida, ettei tätä ongelmaa ole kuin SSH-1-protokollaa käytettäessä. SSH-2:ssa avaimien vaihto tapahtuu tietoturvallisesti.
Toisaalta esimerkiksi SSH-putkea ei kannata muodostaa missä tahansa. Jos et luota ympäristöön, missä olet, älä ota yhteyttä. Jälleen täytyy salausavain saada molempien pisteiden välille, ja liian usein ihmiset jättävät palvelimen avaimen koneelle, jolta yhteys muodostettiin. Tämän jälkeen krakkeri voi perustaa oman valepalvelimensa ja varastaa salasanoja muilta saman palvelimen käyttäjiltä aiemmin mainitulla tekniikalla.
SSH-asiakaspääteohjelmia ja palvelinversioita on hyvin monenlaisia. Yhden valmistajan SSH-pääteohjelma ei välttämättä ole yhteensopiva toisen valmistajan palvelinohjelman kanssa, koska asiakasohjelma ei välttämättä tue palvelimen vaatimia suojausalgoritmeja. Tämä on kuitenkin hyvin harvinaista.
SFTP (SSH File Transfer Protocol taiSecure File Transfer Protocol) on SSH:n mukana tuleva ohjelma, joka on tarkoitettu tiedonsiirtoon.[9]Sillä ei ole yhteyksiä vanhempaanFTP-protokollaan.[9]
OpenSSH-kehittäjät ovat julistaneet tiedostoja SSH-yhteyden yli kopioivan scp-ohjelman ja protokollan vanhentuneeksi. scp:n ongelmana on, että jokerimerkit laajennetaan etäjärjestelmässä, joten käyttäjä ei voi tietää mitä tiedostoja hän on vastaanottamassa, ja voi vahingossa ylikirjoittaa tiedostoja. OpenSSH suosittelee käytettäväksi sftp:tä tairsync:iä tiedostojen siirtoon.[10]
SSH onnistui korvaamaan vakiintuneessa käytössä olleita työkaluja turvallisemmalla vaihtoehdolla. SSH:n eduiksi sanotaan vastaavat toiminnot ja helpompi käytettävyys sekä avoin standardi. Arvioiden mukaan vuoden 2000 lopussa SSH:lla oli kaksi miljoonaa käyttäjää.[11]
- RFC 4250The Secure Shell (SSH) Protocol Assigned Numbers
- RFC 4251The Secure Shell (SSH) Protocol Architecture
- RFC 4252The Secure Shell (SSH) Authentication Protocol
- RFC 4253The Secure Shell (SSH) Transport Layer Protocol
- RFC 4254The Secure Shell (SSH) Connection Protocol
- RFC 4335The Secure Shell (SSH) Session Channel Break Extension
- RFC 4344The Secure Shell (SSH) Transport Layer Encryption Modes
- RFC 4345Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
- RFC 4716The Secure Shell (SSH) Public Key File Format
- RFC 4819Secure Shell Public Key Subsystem
- OpenSSH – Avoin versio SSH-ohjelmistopaketista.
- SSH Tectia – Ohjelmiston alkuperäisen kehittäjän paketti.
- SSH – OS/2:lle
- WebSSH – SSH verkkosivun
- SSHtools – Ilmaisia SSH-sovelluksia
- LSH – GNU-lisenssillä oleva SSH2-asiakasohjelma.
- ZOC – Maksullinen SSH-asiakasohjelma.
- WinSCP SSHFS asiakasohjelma.