**Secure Shell** eli **SSH** on salattuun tietoliikenteeseen tarkoitettu protokolla. 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 suojata FTP-, HTTP- tai muuta liikennettä, joka toimii samalla tasolla. Rlogin, telnet, rsh, rcp ja rdist suositellaan korvattavaksi SSH:lla, koska näiden yhteydenottotapojen suojaustaso on varsin heikko.

SSH-protokollan ensimmäisen version (SSH1) kehitti vuonna 1995 tekniikan lisensiaatti Tatu Ylönen, joka työskenteli tuolloin tutkijana teknillisessä korkeakoulussa. Sittemmin hän perusti SSH Communications Security -nimisen yrityksen.  Toisen version (SSH2) kehitti IETF, 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.

Vuonna 1999 OpenBSD-projektin yhteydessä alettiin kehittää vapaata versiota SSH:ta. OpenSSH perustuu Tatu Ylösen ssh 1.2.12 -julkaisuun, joka oli viimeinen vapaalla lisensillä julkaistu.

SSH-asiakasohjelma kuuluu nykyisin useimpien Unix-sukuisten käyttöjärjestelmien oletusasennukseen, ja se on yleensä käytettävissä komentoriviltä komennolla *ssh*. Windows-koneilla suosittu SSH-etäkäyttöohjelma on PuTTY.

SSH1 ja SSH2
------------

SSH-protokollasta on kaksi versiota, SSH1 ja SSH2, jotka eroavat monin tavoin. Eräs ero johtuu RSA-algoritmin patenteista, joka on sittemmin vanhentunut. SSH2 käyttää useampaa protokollaa eri tarkoituksiin kun SSH1:ssä on yksi monoliittinen protokolla.

SSH1:n käyttämä CRC-tarkistussumma todettiin haavoittuvaksi ja se on SSH2:ssa korvattu viestin todennuskoodialgoritmien (MAC, Message Authentication Code) käytöllä.

SSH1 tukee vain RSA-algoritmia julkisen avaimen autentikaatioon kun SSH2:ssa vaihtoehtoja ovat myös DSA ja OpenPGP. Lisäksi *Rhosts* on poistettu turvattomana. SSH2 käyttää Diffie-Hellman avaimenvaihtoa palvelinavaimen sijaan.

SSH2:ssa istuntoavaimet voi vaihtaa.

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 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ä ovat ECDSA ja EdDSA, joissa on suorituskykyyn ja turvallisuuteen liittyviä parannuksia.

Sertifikaatit
-------------

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 muodostettu tiiviste (esimerkiksi SHA-256). Koska ihmiselle tarkistus on vaivalloista ja virheherkkää, tiedot voidaan tallettaa tunnettujen palvelimien listaan tai ne voidaan jakaa DNSSECin avulla. Kuitenkin käyttäjä luultavaksi hyväksyy avaimen sormenjäljen sitä tarkistamatta, 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 tyypillisesti salasanalla, 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.

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.

Huomioitavaa salatun yhteyden muodostamisessa
---------------------------------------------

Suojatun liikenteen yksi tärkeimmistä periaatteista on, että mahdollisimman monessa paikassa käytetään mahdollisimman monta erityyppistä algoritmia. Näin krakkeri ei yhden liikenteen suojaukset murrettuaan osaa purkaa samalla keinolla muita yhteyksiä. Siksi SSH-ohjelmissa on hyvin monia käytettävissä olevia algoritmeja. 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). Jos krakkeri 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
----

SFTP (*SSH File Transfer Protocol* tai *Secure File Transfer Protocol*) on SSH:n mukana tuleva ohjelma, joka on tarkoitettu tiedonsiirtoon.
Sillä ei ole yhteyksiä vanhempaan FTP-protokollaan.

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ä tai rsync:iä tiedostojen siirtoon.

Suosio
------

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ää.

Standardit
----------

* RFC 4250 *The Secure Shell (SSH) Protocol Assigned Numbers*
* RFC 4251 *The Secure Shell (SSH) Protocol Architecture*
* RFC 4252 *The Secure Shell (SSH) Authentication Protocol*
* RFC 4253 *The Secure Shell (SSH) Transport Layer Protocol*
* RFC 4254 *The Secure Shell (SSH) Connection Protocol*
* RFC 4335 *The Secure Shell (SSH) Session Channel Break Extension*
* RFC 4344 *The Secure Shell (SSH) Transport Layer Encryption Modes*
* RFC 4716 *The Secure Shell (SSH) Public Key File Format*
* RFC 4819 *Secure Shell Public Key Subsystem*

Käytettävissä olevia salaus- ja tunnistusmenetelmiä
---------------------------------------------------

* AES
* AES-GCM (AES Galois Counter Mode, RFC 5647)
* RC4 (Arcfour)
* Blowfish
* DES
* 3-DES
* IDEA
* RSA
* EdDSA (Edwards-Curve Digital Signature Algorithm, Ed25519 ja Ed448, RFC 8032, RFC 8709)

Katso myös
----------

* Alkuluku
* FTPS
* HTTPS
* Kryptografia
* Käyttöliittymä
* PGP
* Salaus
* Tietoturva
* Telnet
* VPN

Lähteet
-------

1. ↑  Daniel J. Barrett, Richard E. Silverman, Robert G. Byrnes: "1.5", *SSH, The Secure Shell: The Definitive Guide, 2nd Edition*. O'reilly Media, 2005. ISBN 978-0-596-00895-6. (englanniksi)
2. ↑  Secsh Protocol Documents *vandyke.com*. Viitattu 23.1.2024. (englanniksi)
3. ↑
4. 1 2 3  Exploiting the SSH CRC32 Compensation Attack Detector Vulnerability (PDF) *giac.org*. Viitattu 23.1.2024. (englanniksi)
5. 1 2 3 4  SSH Frequently Asked Questions *snailbook.com*. Viitattu 23.1.2024. (englanniksi)
6. 1 2
7. ↑  Damien Miller: OpenSSH announces DSA-removal timeline *lwn.net*.  11.1.2024. Viitattu 2.2.2024. (englanniksi)
8. 1 2 3  Lars Wirzenius: Using certificates for SSH authentication *lwn.net*.  8.11.2022. Viitattu 23.11.2022. (englanniksi)
9. 1 2  Justin Ellingwood: How To Use SFTP to Securely Transfer Files with a Remote Server *digitalocean.com*. Viitattu 26.7.2021. (englanniksi)
10. ↑
11. ↑  Nicholas Rosasco & David Larochelle: How and Why More Secure Technologies Succeed in Legacy Markets: Lessons from the Success of SSH (PDF)  Arkistoitu. Viitattu 23.1.2024. (englanniksi)

Aiheesta muualla
----------------

CommonsCommons
Wikimedia Commonsissa on kuvia tai muita tiedostoja aiheesta **SSH**.
* 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.