Ero sivun ”SSH” versioiden välillä
Siirry navigaatioon
Siirry hakuun
p
Lisätty Palvelin-malline
(Kumottu muokkaus #23525, jonka teki ARTTUSN WIHOWIIMEINEN MARSSI TÄYTIN TOIVEENNE PÄÄSETTE NYT EROON MUSTA!!!!!!!! ([[User talk:ARTTUSN WIH) |
p (Lisätty Palvelin-malline) |
||
(42 välissä olevaa versiota 27 käyttäjän tekeminä ei näytetä) | |||
Rivi 1: | Rivi 1: | ||
SSH eli Secure SHell on | '''SSH''' eli ''Secure SHell'' on alun perin suomalaisen Tatu Ylösen kehittämä etäkäyttöohjelmisto, jolla voidaan ottaa [[wikipedia:fi:salaus|salattuja]] yhteyksiä järjestelmästä toiseen. SSH:sta löytyy avoin [[OpenSSH]]-toteutus, joka on peräisin [[OpenBSD]]-projektista. [[PuTTY]] on [[X|X:ssä]] toimiva ssh-asiakasohjelma UNIX-järjestelmille ja Windowsille. SSH on käytännössä täysin korvannut käytössä aikaisemman salaamattoman RSH (Remote SHell) -protokollan. | ||
SSH-palvelun asentaminen palvelimelle ja konfigurointi käsitellään erillisessä artikkelissa [[sshd]]. | |||
== Peruskäyttö == | == Peruskäyttö == | ||
Rivi 15: | Rivi 17: | ||
ssh minun.palvelin.example | ssh minun.palvelin.example | ||
ssh lyhytnimi | ssh lyhytnimi | ||
Mikäli haluat yhdistää avainparilla (keypair) palvelimelle, onnistuu se seuraavalla komennolla | |||
ssh -i /kansio/avain.tiedosto käyttäjänimi@palvelin | |||
== SSH-palvelimen perustaminen == | |||
Jos haluat perustaa palvelimen, johon voi kirjautua SSH:lla, sinun on asennettava SSH-palvelu palvelimelle. Asiaa käsitellään tarkemmin artikkelissa [[sshd]] | |||
== Graafiset ohjelmat == | == Graafiset ohjelmat == | ||
Rivi 59: | Rivi 66: | ||
== Tunnistaminen avainparilla == | == Tunnistaminen avainparilla == | ||
Salasanatunnistuksen ohella varteenotettava tapa autentikoida yhteys palvelimelle on avainparimenettely. Siinä asiakaskoneella luodaan avainpari, jonka yksityinen osa jätetään omalle koneelle, ja julkinen osa siirretään kaikille niille koneille, joilla avainparitunnistusta halutaan käyttää. | Salasanatunnistuksen ohella varteenotettava tapa autentikoida yhteys palvelimelle on avainparimenettely. Siinä asiakaskoneella luodaan avainpari, jonka yksityinen osa jätetään omalle koneelle, ja julkinen osa siirretään kaikille niille koneille, joilla avainparitunnistusta halutaan käyttää. | ||
*Luodaan avainpari ssh-keygen -ohjelmalla | *Luodaan avainpari ssh-keygen -ohjelmalla. Mikäli palvelimelle on asennettu vähintään OpenSSH 6.5, voidaan käyttää parempaa elliptiseen käyrään perustuvaa ed25519-algoritmia. | ||
ssh-keygen -t rsa | ssh-keygen -t ed25519 | ||
Vanhemmat versiot eivät tue ed25519-algoritmia, joten niiden kanssa joudutaan käyttämään RSA:ta. <tt>-b</tt> -lipulla voidaan valita avaimen pituus, jonka voi RSA:ssa valita mielivaltaisesti 768-16384 (oletus 2048) bitin väliltä. | |||
ssh-keygen -t rsa -b 4096 | |||
<tt>ssh-keygen</tt> ilman parametrejä valitsee tyypillisesti järkevät oletusarvot. | |||
*Tässä vaiheessa ssh-keygen kysyy salasanaa avaimelle ja mahdollisesti polkua. Oletuspolkua (~/.ssh/id_rsa) ei yleensä pidä muuttaa, mutta salasana lisää turvallisuutta oleellisesti, jos joku pääsee käsiksi avaintiedostoon. Salasana saa olla mielivaltaisen pitkä. Tiedoston <tt>id_rsa</tt> turvallisuudesta on pidettävä huolta, sillä sen avulla kuka tahansa voi kirjautua käyttämillesi palvelimille tunnuksillasi (murrettuaan mahdollisen salasanan). | *Tässä vaiheessa ssh-keygen kysyy salasanaa avaimelle ja mahdollisesti polkua. Oletuspolkua (~/.ssh/id_rsa) ei yleensä pidä muuttaa, mutta salasana lisää turvallisuutta oleellisesti, jos joku pääsee käsiksi avaintiedostoon. Salasana saa olla mielivaltaisen pitkä. Tiedoston <tt>id_rsa</tt> turvallisuudesta on pidettävä huolta, sillä sen avulla kuka tahansa voi kirjautua käyttämillesi palvelimille tunnuksillasi (murrettuaan mahdollisen salasanan). | ||
*Sitten kopioidaan julkinen osa kaikille palvelimille missä tätä avainparia halutaan hyödyntää. Huomaa, että <tt>authorized_keys</tt>-tiedostossa jokaisella rivillä määritetään yksi avain. Jos et ole aiemmin käyttänyt tätä menetelmää, tiedostoa ei ole, ja oman julkisen avaimen kopioiminen etäkoneen <tt>authorized_keys</tt>-tiedostoksi ei tuota ongelmia. | *Sitten kopioidaan julkinen osa kaikille palvelimille missä tätä avainparia halutaan hyödyntää. Helpointa on käyttää tähän ssh-copy-id -ohjelmaa, joka tulee useimpien jakeluiden mukana. | ||
ssh-copy-id etäkone | |||
Muita tapoja julkisen osan kopiointiin on esitetty seuraavassa. Huomaa, että <tt>authorized_keys</tt>-tiedostossa jokaisella rivillä määritetään yksi avain. Jos et ole aiemmin käyttänyt tätä menetelmää, tiedostoa ei ole, ja oman julkisen avaimen kopioiminen etäkoneen <tt>authorized_keys</tt>-tiedostoksi ei tuota ongelmia. | |||
[[scp]] ~/.ssh/id_rsa.pub palvelin:/home/kayttaja/.ssh/authorized_keys | [[scp]] ~/.ssh/id_rsa.pub palvelin:/home/kayttaja/.ssh/authorized_keys | ||
Mikäli sinulla on jo ennestään etäkoneessa <tt>~/.ssh/ | Mikäli sinulla on jo ennestään etäkoneessa <tt>~/.ssh/authorized_keys</tt>-tiedosto, voit komentaa näin: | ||
[[cat]] ~/.ssh/id_rsa.pub | ssh käyttäjä@etäkone '[[cat]] >> ~/.ssh/authorized_keys' | [[cat]] ~/.ssh/id_rsa.pub | ssh käyttäjä@etäkone '[[cat]] >> ~/.ssh/authorized_keys' | ||
*Nyt voit kirjautua kaikille palvelimille, joille olet julkisen avaimesi kopioinut käyttämättä palvelimen salasanaa. Salasanan ei siis enää tarvitse olla helposti muistettava – ja salasanalla kirjautumisen sshd:n kautta voi kieltää kokonaan. Käyttäen ohjelmaa ssh-agent säästytään myös avaintiedoston salasanan | *Nyt voit kirjautua kaikille palvelimille, joille olet julkisen avaimesi kopioinut käyttämättä palvelimen salasanaa. Salasanan ei siis enää tarvitse olla helposti muistettava – ja salasanalla kirjautumisen sshd:n kautta voi kieltää kokonaan. | ||
*Käyttäen ohjelmaa ssh-agent säästytään myös avaintiedoston salasanan toistuvalta antamiselta. Avaintiedoston salasana annetaan vain kerran X- tai pääteistunnon alussa. Ssh-agentin voi käynnistää taustalle automaattisesti aina koneen uudelleenkäynnistyksen yhteydessä lisäämällä [[crontab]]:iin rivi: | |||
@reboot ssh-agent -s | grep -v echo > $HOME/.ssh-agent | |||
*Pääteistunnon aluksi annetaan komento: | |||
ssh-add -t 10800 | |||
*Seuraavaksi kysytään avaintiedoston salasanaa kerran, minkä jälkeen voit ilman salasanakyselyä kirjautua normaalisti ssh:lla 10800 sekunnin ajan kaikille niille palvelimille, joille olet julkisen avaimesi kopioinut. | |||
Jos haluaa kirjautua automaattisesti, esimerkiksi cron-työn yhteydessä, joutuu käyttämään salasanatonta avaintiedostoa. Tähän käyttöön voi luoda rinnakkaisen avaimen, jota pidetään eri tiedostossa (johon viitataan ssh:n vivulla <code>-i</code>) ja avaimen valtuuksia voi rajoittaa laittamalla tiedoston authorized_keys tämän avaimen kohdalle rivin alkuun "optioita", esimerkiksi (huomaa pilkkujen, lainausmerkkien ja välilyöntien käyttö): | Jos haluaa kirjautua automaattisesti, esimerkiksi cron-työn yhteydessä, joutuu käyttämään salasanatonta avaintiedostoa. Tähän käyttöön voi luoda rinnakkaisen avaimen, jota pidetään eri tiedostossa (johon viitataan ssh:n vivulla <code>-i</code>) ja avaimen valtuuksia voi rajoittaa laittamalla tiedoston authorized_keys tämän avaimen kohdalle rivin alkuun "optioita", esimerkiksi (huomaa pilkkujen, lainausmerkkien ja välilyöntien käyttö): | ||
from="*.kotiverkko.example.org,työkoneeni.example.com",no-port-forwarding,no-X11-forwarding jatässäitsejulkinenavainkaikkinensa | from="*.kotiverkko.example.org,työkoneeni.example.com",no-port-forwarding,no-X11-forwarding jatässäitsejulkinenavainkaikkinensa | ||
''HUOM! Jos SSH-palvelimella on [[eCryptfs]]:llä salatut kotihakemistot, joutuu SSH joka tapauksessa aina kysymään salasanaasi, koska sitä tarvitaan kotihakemiston salauksen avaamiseen.'' | |||
== Tunneli == | == Tunneli == | ||
SSH:n avulla voi tunneloida minkä tahansa TCP-portin käytettäväksi verkon yli. Tämä tapahtuu sovelluksille läpinäkyvästi, joten se tarjoaa hienon mahdollisuuden parantaa – tai huonontaa – tietoturvaa tilanteissa, joissa tietyn sovelluksen muokkaaminen ei ole mahdollista tai käytännöllistä. Seuraavassa esimerkissä tunneloidaan paikallisen koneen ([[localhost]]) portti | SSH:n avulla voi tunneloida minkä tahansa TCP-portin käytettäväksi verkon yli. Tämä tapahtuu sovelluksille läpinäkyvästi, joten se tarjoaa hienon mahdollisuuden parantaa – tai huonontaa – tietoturvaa tilanteissa, joissa tietyn sovelluksen muokkaaminen ei ole mahdollista tai käytännöllistä. | ||
ssh -L | |||
Tässä esitellään yksittäisten porttien ohjausta SSH-yhteyden kautta. Tämä riittää yksinkertaisimmissa tapauksissa. IP-tunnelien muodostaminen SSH-yhteyden kautta on myös mahdollista. Lisätietoja asiasta saatavilla artikkelissa [[SSH-tunneli]]. | |||
Seuraavassa esimerkissä tunneloidaan paikallisen koneen ([[localhost]]) portti <tt>6060</tt> SSH:lla niin, että sen kautta voi käyttää etäkoneen porttia <tt>23</tt>. | |||
ssh -L 6060:localhost:23 etäkone | |||
Ottamalla nyt yhteyden paikallisella koneella porttiin <tt>6060</tt>, yhteys ohjautuu SSH-tunnelin yli etäkoneen porttiin <tt>23</tt>, [[telnet]]. | |||
Tunnelia ei ole pakko tehdä localhostiin, vaan mikä tahansa kone käy. Näin voit esimerkiksi päästä käsiksi sisäverkkoihin, joihin et suoraan Internetistä pääse. Esimerkki: | Tunnelia ei ole pakko tehdä localhostiin, vaan mikä tahansa kone käy. Näin voit esimerkiksi päästä käsiksi sisäverkkoihin, joihin et suoraan Internetistä pääse. Esimerkki: | ||
ssh -L 1337 | ssh example.com -L 123:192.168.6.12:1337 -N | ||
Tässä esimerkissä otat siis ssh-yhteyden palvelimelle example.com, johon sinulla on tunnus ja pääsy. Example.com-palvelimella SSH-palvelin tunneloi yhteyden sisäverkon koneelle 192.168.6.12 ja portille 1337, johon ei normaalisti ole ulkoa pääsyä. N-vipu estää komentotulkkiin siirtymisen ja jättää ssh:n tilaan, jossa salasanakyselyn jälkeen ei näytä tapahtuvan mitään. | |||
Tämän jälkeen voisit jollakin ohjelmalla ottaa yhteyttä osoitteeseen ja porttiin localhost:123 ja tunnelin ansiosta siinä vastaisikin sisäverkon koneen portti 1337. Kun olet valmis, katkaise SSH-istunto näppäinyhdistelmällä Ctrl+C. | |||
=== WWW-selaimen tunnelointi === | |||
OpenSSH:ssa on myös sisäänrakennettu socks palvelin, jonka avulla WWW-selaimen liikenne voidaan helposti tunneloida ilman ylimääräistä ohjelmistoa. | |||
Esimerkki: | |||
ssh -D 8080 kayttaja@palvelin.fi | |||
Tunnelin luomisen jälkeen selaimen SOCKS v4 välityspalvelimen osoitteeksi asetetaan localhost (joissain selaimissa käytettävä ip-osoitetta 127.0.0.1) ja portiksi esimerkin tapauksessa 8080. On huomattava, että selaimen lisäosat eivät välttämättä kunnioita selaimen välityspalvelin asetuksia, jonka vuoksi esim. [[Yle Areena]]n käyttö ei onnistu tällä järjestelyllä ulkomailta. Siitä huolimatta tunnelointi parantaa huomattavasti tietoturvaa käytettäessä avoimia langattomia verkkoja. Tietoturvaa voi parantaa estämällä [[palomuuri|palomuurilla]] liikenteen ulospäin, näin ei voi vahingossakaan käyttää Internetiä turvattomasti tunnelin ohi. | |||
=== Käänteinen tunneli === | === Käänteinen tunneli === | ||
Käänteisen tunnelin idea on sama kuin normaalinkin tunnelin, mutta se käynnistetään toisesta päästä. Käänteinen tunneli mahdollistaa vaikkapa palomuurin takana olevan koneen etäylläpidon. Seuraavassa esimerkissä tunneloidaan paikallisen koneen portti | Käänteisen tunnelin idea on sama kuin normaalinkin tunnelin, mutta se käynnistetään toisesta päästä. Käänteinen tunneli mahdollistaa vaikkapa palomuurin takana olevan koneen etäylläpidon. Seuraavassa esimerkissä tunneloidaan paikallisen koneen portti <tt>23</tt> SSH:lla niin, että se on käytettävissä etäkoneelta portissa <tt>1337</tt>. | ||
ssh -R 1337:localhost: | ssh -R 1337:localhost:23 etäkone | ||
Ottamalla nyt yhteyden etäkoneella porttiin <tt>1337</tt>, yhteys ohjautuu SSH-tunnelin ja mahdollisen palomuurin läpi paikalliselle koneelle porttiin <tt>23</tt>. | |||
Huomio tunneleita rakentaessasi, että kuuntelevan [[pistoke|pistokkeen]] (engl. socket) asettaminen porttia <tt>1024</tt> alhaisempien portteihin vaatii kyseisessä järjestelmässä [[root]]-oikeudet. | |||
==Tietoturva== | ==Tietoturva== | ||
SSH-yhteys on salattu, mutta ei pidä tuudittautua valheellisen turvallisuuden tunteeseen, sillä erilaisia hyökkäyskeinoja | SSH-yhteys on salattu, mutta ei pidä tuudittautua valheellisen turvallisuuden tunteeseen, sillä erilaisia hyökkäyskeinoja on olemassa. Lue artikkelista [[SSH-turvatoimet]] vinkkejä SSH-palvelimesi turvaamiseen. | ||
Salaus auttaa siihen, ettei verkkoa passiivisesti salakuunteleva pysty seuraamaan liikennettä ja ettei sitä pystytä muokkaamaan. Edellinen voi myös olla tietoturvaongelma, sillä yrityksen palomuurikaan ei pysty erottamaan ongelmallista liikennettä sallittusta. | Salaus auttaa siihen, ettei verkkoa passiivisesti salakuunteleva pysty seuraamaan liikennettä ja ettei sitä pystytä muokkaamaan. Edellinen voi myös olla tietoturvaongelma, sillä yrityksen palomuurikaan ei pysty erottamaan ongelmallista liikennettä sallittusta. | ||
Rivi 101: | Rivi 146: | ||
===Murtautuminen=== | ===Murtautuminen=== | ||
Se, että ssh-liikenne on salattua, ei estä | Se, että ssh-liikenne on salattua, ei estä murtautumasta ssh-palvelimen kautta suoraan. Itse palvelimessa ei ole ollut kovin paljon reikiä, mutta heikkoja salasanoja voi hyödyntää ssh-palvelimen kautta. Joissakin [[jakelu]]issa palvelin on oletuksena päällä, koska koneita on tarkoitettu etäylläpidettäviksi. Tällöin on tärkeää rajoittaa miltä koneilta ja mille tunnuksille ssh:lla pystyy kirjautumaan ja varmistamaan, että näillä tunnuksilla on hyvät salasanat – ellei salasanalla kirjautumista ssh:lla estetä kokonaan (katso [[#Tunnistaminen avainparilla|tunnistaminen avainpareilla]] yllä). | ||
Katso myös [[SSH-turvatoimet]]. | Katso myös [[SSH-turvatoimet]]. | ||
Rivi 114: | Rivi 159: | ||
ssh -x kone-ilman-x-ohjelmia.example.org | ssh -x kone-ilman-x-ohjelmia.example.org | ||
ssh -X kone-jossa-x-ohjelmia.example.org | ssh -X kone-jossa-x-ohjelmia.example.org | ||
ssh | ssh -Y kone-johon-luottaa.example.org | ||
==SSH välityspalvelimen läpi== | ==SSH välityspalvelimen läpi== | ||
Rivi 125: | Rivi 170: | ||
==Käyttöesimerkki: varakopiot verkon yli== | ==Käyttöesimerkki: varakopiot verkon yli== | ||
Varakopioi kotisivusi toisen koneen kotihakemistosta ssh:lla | Varakopioi kotisivusi toisen koneen kotihakemistosta ssh:lla. Tähän käyttötarkoitukseen [[rsync]] tai [[rdiff-backup]] sopivat kylläkin huomattavasti paremmin. | ||
ssh toinen.kone.fi 'cd public_html && tar -cjvf - .' | cat > kotisivut.tar.bz2 | ssh toinen.kone.fi 'cd public_html && tar -cjvf - .' | cat > kotisivut.tar.bz2 | ||
Rivi 138: | Rivi 183: | ||
Koneet A ja B ovat [[palomuuri]]en takana, kone C ei. Tarkoituksena nähdä koneen A näytöllä koneen B näytön näkymä [[VNC#Yhdist.C3.A4minen_olemassaolevaan_X-istuntoon|VNC-yhteyden]] yli. | Koneet A ja B ovat [[palomuuri]]en takana, kone C ei. Tarkoituksena nähdä koneen A näytöllä koneen B näytön näkymä [[VNC#Yhdist.C3.A4minen_olemassaolevaan_X-istuntoon|VNC-yhteyden]] yli. | ||
Kone A ottaa ensiksi yhteyden koneeseen C tunneloiden koneen C portin 5903 paikalliseen porttiin 5904: | Kone A ottaa ensiksi yhteyden koneeseen C, tunneloiden koneen C portin 5903 paikalliseen porttiin 5904: | ||
ssh ckayttaja@ckone.com -L 5904:localhost:5903 | ssh ckayttaja@ckone.com -L 5904:localhost:5903 | ||
Tämän jälkeen kone B ottaa yhteyden koneeseen C | Tämän jälkeen kone B ottaa yhteyden koneeseen C. Tunneloiden koneen C portti 8001 koneen B porttiin 22 (SSH): | ||
ssh -R 8001:localhost:22 ckayttaja@ckone.com | ssh -R 8001:localhost:22 ckayttaja@ckone.com | ||
Tämän jälkeen käyttäjä A ottaa koneelta C yhteyden koneeseen B | Tämän jälkeen käyttäjä A ottaa koneelta C yhteyden koneeseen B. Tunneloiden koneen B portin 5900(VNC) koneen C porttiin 5903: | ||
ssh bkayttaja@localhost -p 8001 -L 5903:localhost:5900 | ssh bkayttaja@localhost -p 8001 -L 5903:localhost:5900 | ||
Rivi 151: | Rivi 196: | ||
Ja tämä B-koneen portti 5900 tunneloituu noin neljän portin läpi koneen A porttiin 5904, jolloin A saa VNC:n käyntiin: | Ja tämä B-koneen portti 5900 tunneloituu noin neljän portin läpi koneen A porttiin 5904, jolloin A saa VNC:n käyntiin: | ||
vncviewer localhost: | vncviewer localhost:5904 | ||
==Katso myös== | ==Katso myös== | ||
*[[SSH-turvatoimet]] | |||
*[[sshd]] | |||
*[[ClusterSSH]] | |||
*[[SFTP]] | *[[SFTP]] | ||
*[[SCP]] | *[[SCP]] | ||
*[[Telnet]] | *[[Telnet]] | ||
*[[HST]] - Henkilökortin varmenteiden käyttö. | |||
==Aiheesta muualla== | ==Aiheesta muualla== | ||
* [[wikipedia:fi:SSH|SSH Wikipediassa]] | * [[wikipedia:fi:SSH|SSH Wikipediassa]] | ||
* [[wikibooks:fi:SSH|SSH Wikikirjastossa]] | |||
* [http://www.openssh.com/ OpenSSH] | * [http://www.openssh.com/ OpenSSH] | ||
* [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] | * [http://www.chiark.greenend.org.uk/~sgtatham/putty/ PuTTY] | ||
[[Luokka:Etäkäyttö]] | |||
[[Luokka:Verkko]] | |||
[[Luokka:Palvelimet]] | [[Luokka:Palvelimet]] | ||
[[Luokka:Tietoturva]] | [[Luokka:Tietoturva]] | ||
[[Luokka:Komentorivin erikoisohjelmat]] | [[Luokka:Komentorivin erikoisohjelmat]] | ||
{{Malline:Palvelin}} |