Ero sivun ”SSH” versioiden välillä

Siirry navigaatioon Siirry hakuun
3 258 merkkiä lisätty ,  1. tammikuuta 2019
p
Lisätty Palvelin-malline
p (Lisätty Palvelin-malline)
 
(24 välissä olevaa versiota 19 käyttäjän tekeminä ei näytetä)
Rivi 1: Rivi 1:
SSH eli Secure SHell on alunperin 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''' 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ää. Tässä menettelyohjeet:
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. 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 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ä.


*Luodaan avainpari ssh-keygen -ohjelmalla
ssh-keygen -t rsa -b 4096


ssh-keygen -t rsa
<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/authorized_keys</tt>-tiedosto, voit komentaa näin:
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 &ndash; ja salasanalla kirjautumisen sshd:n kautta voi kieltää kokonaan. Käyttäen ohjelmaa ssh-agent säästytään myös avaintiedoston salasanan antamisesta, paitsi kerran X- tai pääteistunnon alussa, ssh-agentin käynnistämisen yhteydessä.
*Nyt voit kirjautua kaikille palvelimille, joille olet julkisen avaimesi kopioinut käyttämättä palvelimen salasanaa. Salasanan ei siis enää tarvitse olla helposti muistettava &ndash; 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-palvelin on esim. Ubuntu ja siinä on eCryptfs:llä salatut kotihakemistot, joutuu SSH joka tapauksessa aina kysymään salasanaasi, koska sitä tarvitaan kotihakemiston salauksen avaamiseen.''
''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 ==
Rivi 89: Rivi 109:


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 123:192.168.6.12:1337 etäkone
  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 ===
Rivi 114: Rivi 146:
===Murtautuminen===
===Murtautuminen===


Se, että ssh-liikenne on salattua, ei estä murtautumaasta 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 &ndash; ellei salasanalla kirjautumista ssh:lla estetä kokonaan (katso [[#Tunnistaminen avainpareilla|tunnistaminen avainpareilla]] yllä).
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 &ndash; ellei salasanalla kirjautumista ssh:lla estetä kokonaan (katso [[#Tunnistaminen avainparilla|tunnistaminen avainpareilla]] yllä).


Katso myös [[SSH-turvatoimet]].
Katso myös [[SSH-turvatoimet]].
Rivi 127: 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 -X -Y kone-johon-luottaa.example.org
  ssh -Y kone-johon-luottaa.example.org


==SSH välityspalvelimen läpi==
==SSH välityspalvelimen läpi==
Rivi 151: 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 tunneloiden koneen C portti 8001 koneen B porttiin 22 (SSH):
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 tunneloiden koneen B portin 5900(VNC) koneen C porttiin 5903:
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 168: Rivi 200:
==Katso myös==
==Katso myös==
*[[SSH-turvatoimet]]
*[[SSH-turvatoimet]]
*[[sshd]]
*[[ClusterSSH]]
*[[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]
Rivi 183: Rivi 218:
[[Luokka:Tietoturva]]
[[Luokka:Tietoturva]]
[[Luokka:Komentorivin erikoisohjelmat]]
[[Luokka:Komentorivin erikoisohjelmat]]
{{Malline:Palvelin}}
574

muokkausta

Navigointivalikko