Secure Shell (SSH)
SSH on protokolla, joka käyttää Internetin näkymätöntä puoliskoa: jokaisen järjestelmänvalvojan etäkonsolia, jokaista kehittäjän käyttöönottovaihetta, jokaista Git-työntöä yksityiseen tietovarastoon. Se korvasi telnetin 1990-luvun lopulla ja on siitä lähtien ollut oletusarvoinen suojattu suojaprotokolla. Tietäen, mitä se todella tekee, monissa operaatioissa on järkeä.
Artikkelin koko runko on englanniksi alla.
SSH (Secure Shell) on kryptografinen verkkoprotokolla verkkopalvelujen käyttämiseen turvallisesti suojaamattoman verkon kautta. Yleisimmin käytetty komentorivin etäkirjautumiseen ("kuori" nimessä) ja tiedostojen siirtoon, mutta taustalla oleva protokolla on tarpeeksi yleinen tunneloidakseen minkä tahansa TCP-sovelluksen. SSH:n loi Tatu Ylönen vuonna 1995 yliopistollaan tapahtuneen salasanan hauskimisen jälkeen; OpenSSH-toteutus (aloitettu 1999) on nykyään eniten käytetty versio.
Mitä SSH tarjoaa
Kolme ominaisuutta:
- Luottamuksellisuus — salattu kuljetuksen aikana. Verkon tarkkailijat näkevät salatut tavut, eivät komentoja tai salasanoja.
- Integrity — muokatut paketit tunnistetaan ja hylätään.
- Molempien päiden todennus — asiakas todentaa palvelimelle julkisen avaimen tai toisen menetelmän. (isäntäavaimen kautta).
Yhdistelmä korvaa vanhemman telnet-, rlogin-, rsh- ja rcp-paketin – jotka kaikki välittivät valtuustiedot selkeänä tekstinä.
Kuinka SSH-yhteydet toimivat
Kättely, yksinkertaistettu:
- Client avaa TCP-yhteyden palvelimeen portissa 22 (konfiguroitavissa).
- Molemmat puolet vaihtavat versiomerkkijonoja.
- Molemmat puolet vaihtavat tuettuja algoritmeja; valitse vahvin keskinäinen salaus, KEX, MAC.
- Key-vaihto – tyypillisesti X25519- tai NIST-käyrät nykyään. Molemmat osapuolet saavat jaetun salaisuuden ilman, että se kulkee langan läpi tavallisena tekstinä.
- Palvelin lähettää isäntäavaimensa, joka on allekirjoitettu jaetulla salaisuudella. Asiakas tarkistaa ~/.ssh/known_hosts.
- Tästä eteenpäin kaikki on salattu jaetusta salaisuudesta johdetuilla avaimilla.
- Asiakas todentaa — salasanalla, julkisella avaimella tai jollain muulla mekanismilla.
- Salattu istunto on avoin. Asiakas pyytää komentotulkkia, tiedostonsiirtoa, portin edelleensiirtoa tai mitä tahansa, mitä se todella haluaa.
Todennusmenetelmät
- Password. Käyttäjä kirjoittaa salasanan; se lähetetään salattuna istunnon sisällä. Yksinkertainen, mutta alttiina paljastuneita SSH-palvelimia vastaan kohdistuville tunnistetietojen täyttämishyökkäyksille.
- Julkinen avain. Asiakkaalla on yksityinen avain (tyypillisesti muodossa
~/.ssh/id_ed25519); palvelimella on vastaava julkinen avain tiedostossa~/.ssh/authorized_keys. Asiakas todistaa omistavansa yksityisen avaimen allekirjoittamalla haasteen palvelimelta. Mikään salasana ei kulje verkon läpi. Suositeltu oletusarvo lähes kaikkiin käyttötapauksiin. - Certificate-based. Varmentaja allekirjoittaa varmenteen käyttäjän avaimelle, mukaan lukien vanheneminen ja rajoitukset. Palvelimet luottavat varmentajaan, luottavat automaattisesti allekirjoitettuihin sertifikaatteihin. Oikea malli organisaatioille, joissa on paljon käyttäjiä; korvaa ssh-key-distribution painajaisen.
- FIDO2 / hardware-key SSH. Uusin OpenSSH tukee avaimia, joita tukee laitteiston suojaustunnus. Tietojenkalastelu-suojattu, vaatii fyysistä hallussapitoa.
- Multi-factor – yhdistä edellä mainitut. Salasana + avain tai salasana + laitteistotunnus.
Shell-pääsyn lisäksi: portin edelleenohjaus
SSH voi tunneloida mielivaltaisen TCP-liikenteen salatun istunnon kautta:
- Paikallinen porttiohjausPLZ81XPLXX:
ssh -L 9000:internal:3306 user@bastionavaa paikallisen portin 9000, joka tunneloidaaninternal:3306:ään bastionisännän kautta. Hyödyllinen sisäisten palvelujen tavoittamiseen hyppyisäntäkoneen kautta. - Etäportin edelleenlähetys (
-R): päinvastainen suunta. Etäisäntä saa portin, joka tunneloi takaisin koneesi palveluun. - Dynaaminen portin edelleenlähetys (
-D): SSH luo SOCKS5-välityspalvelimen paikalliselle koneellesi. Jokaisen siihen osoitetun sovelluksen TCP-liikenne tunneloidaan SSH-istunnon läpi. Tehokas yhden käyttäjän VPN SSH.
SSH dynaaminen edelleenlähetys on hyödyllisin yksittäinen köyhien VPN; kaikilla, joilla on palvelin jossain, on pääsy siihen.
OpenSSH-ekosysteemi
- ssh — client
- sshd — palvelimen daemon
- scp, suojattu kopio nyt useimmiten korvattu legacy:lla. huppu)
- sftp — suojattu FTP, erillinen protokolla, joka toimii SSH
- ssh-agent:n sisällä — tallentaa salatut avaimet välimuistiin, jotta et syötä salasanaa connection
- ssh-keygen — luo avainpareja
- ssh-copy-id — kopioi julkisen avaimesi valtuutettuun_avaimet-etätiedostoon
- Poista salasanatodennus käytöstä. Vain julkiset avaimet. Poistaa koko valtuustietoihin liittyvän hyökkäysvektorin.
- Käytä Ed25519-avaimia. Moderni, nopea, pieni.
ssh-keygen -t ed25519on oikea komento uusille avaimille. - Käytä muuta kuin oletusporttia. Marginaali; enimmäkseen vähentää skannerin lokikohinaa.
- fail2ban tai sshguard — estä IP-osoitteet toistuvien epäonnistuneiden yritysten jälkeen.
- Rajoita käyttäjätilejä, jotka voivat SSH.
AllowUsersX sshd_config. - Käytä VPN:tä tai Tailscale:tä – älä paljasta SSH:ta julkiselle Internetille ollenkaan, jos voit välttää sen.
- Tarkista tunnettuja_isäntiä ja valtuutettuja_avaimia. Poista avaimet :lle tarkista odottamattomien merkintöjen varalta.
Usein kysytyt kysymykset
- Mitä porttia SSH käyttää?
- 22 oletuksena. Portti on konfiguroitavissa; Jotkut operaattorit siirtävät SSH:n ei-standardiporttiin vähentääkseen lokien skannausliikennettä. Tämä on turvaa epäselvyyden kautta – hyödyllistä hygienian, ei varsinaisen turvallisuuden kannalta. Todellinen turvallisuus on vahva todennus.
- Onko SSH turvallisempi kuin HTTPS?
- Erilaisia uhkamalleja. Molemmat käyttävät modernia kryptografiaa ja ovat olennaisesti yhtä turvallisia protokollatasolla. SSH:ta käytetään tyypillisesti julkisen avaimen todennuksen kanssa (ei salasanoja, erittäin vahva), kun taas monet HTTPS-sivustot käyttävät edelleen salasanatodennusta (oletuksena heikompi). Protokollat ovat vertaisia; käyttöönottokäytännöt vaihtelevat.
- Voinko käyttää SSH:ta tiedostojen siirtoon?
- Kyllä. <code>scp</code> ja <code>sftp</code> toimivat molemmat SSH:n yli. SFTP on tehokkaampi nykyaikainen valinta - resumable-siirrot, rekursiiviset toiminnot, atomic kirjoittaa. <code>rsync</code> voi myös käyttää SSH:ta siirtona, ja se on oikea työkalu mihin tahansa ei-triviaaliseen siirtoon.
- Mikä on SSH-avain?
- Todennukseen käytetty julkinen/yksityinen avainpari. Yksityinen avain on tiedostossa <code>~/.ssh/id_*</code> koneessasi; julkinen avain asennetaan tiedostoon <code>~/.ssh/authorized_keys</code> palvelimilla, joihin muodostat yhteyden. Yksityisen avaimen menettäminen ilman tunnuslausetta on vakava ongelma – kuka tahansa, jolla on se, voi kirjautua sisään sinun nimelläsi. Suojaa SSH-avaimet aina tunnuslauseella.
- Miksi SSH sanoo "isäntäavain vaihdettu"?
- Palvelimen identiteettiavain on muuttunut edellisen yhteyden jälkeen – joko palvelin rakennettiin uudelleen, avainta käännettiin tai jokin on vialla (huvittavin tapaus: joku esiintyy palvelimena). Älä sokeasti hyväksy uutta avainta; tarkista kaistan ulkopuolisuus palvelimen operaattorilta. Jos se oli laillinen kierto, poista vanha avain tiedoista_isännät ja hyväksy uusi.