Revision 37 as of 2007-08-17 22:56:40

Clear message

SSH ja SFTP-palvelimen asennus

SSH on tietoturvaltaan erittäin hyvä tapa ottaa etäyhteyksiä telnetin tapaan. Tämän lisäksi se tarjoaa mahdollisuuden käyttää jopa graaffisia ohjelmia etänä. Ssh salaa koko yhteyden mukaan lukien yhteydenoton, joten tunnukset ja salasanat pysyvät turvassa. OpenSSH sisältää myös mahdollisuuden SFTP:llä tapahtuvaan tiedostojen siirtoon. Se vastaa täysin FTP:tä, mutta liikenne on salattua ssh-pääteyhteyden tapaan.

Palvelimen asennus

Avaa pääte ja komenna

$ sudo apt-get install openssh-server

SSH-palvelin käynnistyy samalla kuin se asennetaan, joten siihen voi heti yrittää ottaa yhteyttä joko SSH:llä tai SFTP:lla. Nythän kuka tahansa joka näkee koneen ulkoisen IP:n pystyy yrittämään koneelle sisään arvaamalla käyttäjätunnuksen ja salasanan. Ubuntussa ei onneksi ole rootin tiliä aktivoituna, joten siihen kohdistuvat yritykset ovat luonnollisesti turhia. Muutenkin nuo madot yrittävät yleensä arvailla englantilaisia erisnimiä, joten suomalaisilla koneilla niitä ei useinkaan onnista. Olisi kuitenkin mukavaa jos pystyisi määräämään ketkä saavat ottaa koneelle yhteyttä, ja sen toki pystyykin tekemään seuraavasti.

  1. Avaa tekstieditorissa pääkäyttäjän oikeuksin (sudo) tiedosto /etc/ssh/sshd_config

  2. etsi kohta PermitRootLogin yes ja muuta sen arvoksi no

  3. Voit rajoittaa ssh:n käyttöoikeuden tietyille käyttäjille lisäämällä tiedoston loppupuolelle rivi joka alkaa avainsanalla AllowUsers ja listataan sen perään välilyönnillä erotettuna käyttäjät jotka saavat ottaa koneeseen yhteyden

    AllowUsers janne mikk0 ninnnu
  4. tallenna tiedosto ja käynnistä palvelin uudestaan komentamalla:
    $ sudo /etc/init.d/ssh restart
    Nyt koneelle pääsee vain tunnuksilla janne, mikk0 ja ninnnu Tällä tietoturvatasolla voi aloittaa. Kannattaa kuitenkin seurata tiedostosta /var/log/messages, keitä koneelle on yrittänyt sisään.

Yksityisen ja julkisen avaimen käyttöönotto

Yksityisellä ja julkisella avaimella voidaan tiukentaa tietoturva vaatimuksia, jolloin kirjautumiseen tarvitaan vähintään 1024 bittinen avain-tiedosto sekä sitä vastaava salasana. Tai niillä voidaan myös vähentään salasanojen ainaista kirjoittelua (alempana lisää). Käyttäjien täytyy luoda itselleen avaimet joita tulee kaksi kappaletta: julkinen ja yksityinen. Julkinen avain pitää toimittaa palvelimelle johon ollaan kirjautumassa ja yksityinen avain pitää lisätä käyttäjän kotihakemistossa olevaan hakemistoon .ssh. Julkinen avain siis määrää millä yksityisellä avaimella saa kirjautua sisään.

Avainparin luominen asiakaskoneella

Kannattanee hyväksyä tiedostojen oletussijainti ~/.ssh/id_rsa ja ~/.ssh/id_rsa.pub. Noista ensimmäinen eli yksityinen avain tulee siis pitää visusti poissa ulkopuolisten silmistä! Ja jälkimmäinen on se julkinen avain joka toimitetaan palvelimelle. Tuo ohjelma kysyy myös salasanaa joka liitetään avaimeen ja jota käytetään jatkossa avaimen kanssa kirjautuessa (se voi olla eri kuin käyttäjän kohdekoneen salasana).

Käyttöönotto palvelimessa

  1. Avaa taas tiedosto /etc/ssh/sshd_config pääkäyttäjän oikeuksin

  2. Etsi kohta
    #AuthorizedKeysFile     %h/.ssh/authorized_keys
    Poista kommentointi (se risuaita siitä alusta).
  3. Tallenna tiedosto ja käynnistä palvelin uudestaan.

Julkisen avaimen lisääminen palvelimelle

  1. Kopioidaan julkinen avain asiakaskoneelta palvelimelle
    $ scp ~/.ssh/id_rsa.pub tunnus@palvelin:

    Ole tässä tarkkana ettet vahingossakaan lähetä yksityistä avainta (id_rsa) palvelimelle!

  2. Kirjaudutaan palvelimelle
    $ ssh tunnus@palvelin
  3. Lisätään avain
    $ cat id_rsa.pub >> .ssh/authorized_keys
  4. Ja lopuksi kannattanee vielä poistaa turha avaintiedosto palvelimelta
    $ rm id_rsa.pub

Tämän saman tempun voi tehdä siis niin monelle palvelimelle kuin haluaa tällä samalla id_rsa.pub -tiedostolla. Nyt sinun pitäisi pystyä kirjautumaan niille kaikille palvelimille sillä salasanalla jonka asetit tuolle avaimelle.

Ssh osaa siis käyttää suoraan tuota yksityistä avainta kunhan se on tallennettu oletussijaintiin. Jos haluat käyttää muualle tallennettua avainta niin se onnistuu -i vivulla:

Tietoturva

Jotta avainten tuoma tietoturvalisä saataisiin oikeasti käyttöön täytyy tavallinen salasanalla kirjautuminen poistaa käytöstä. Se onnistuu yksinkertaisesti asettamalla palvelimen conffi-tiedostoon /etc/ssh/sshd_config rivi:

PasswordAuthentication no

Ko. rivi löytyy jo sieltä, mutta kommentoituna ja arvolla "yes". Tämän jälkeen palvelin pitää tietysti käynnistää uudelleen.

Graaffisten ohjelmien etäkäyttö

Graaffisia ohjelmia pystyy käyttä mään suoraan ssh:n läpi kunhan yhteys otetaan -X vivun kanssa. Ennen kuin tätä voidaan käyttää täytyy se aktivoida ssh-palvelimen asetuksista.

Nyt graaffisten ohjelmien etäkäyttö pitäisi onnistua. Kannattaa myös laittaa yhteyden pakkaus päälle -C vivulla jolloin graaffinen etäyhteys helpottuu hitaammilla yhteyksillä. Huomaa että kyseessä on iso X ja C.

$ ssh -XC tunnus@palvelin
tunnus@palvelin:~$ xmms

Ja vaikka xmms:n pitäisi nyt käynnistyä.

Keychain - Useita palvelimia yhden salasanan taakse

Kun käytössä alkaa olla useita palvelimia, niin ainainen salasanojen syöttäminen alkaa tuntua turhauttavalta ja tulee tarve vähentää niitä. Helppo, mutta typerä ratkaisu olisi tehdä avainpari ilman salasanaa, jolloin kirjautumiseen ei koskaan tarvittaisi salasanaa. Tämä olisi tosin äärimmäisen epäturvallista, sillä jos joku saa käsiisi sinun id_rsa-tiedoston hän pystyisi kirjautumaan kaikkille niille palvelimille joille olet asettanu sen.

Kun sinulla on julkisella avaimella kirjautuminen käytössä, voidaan hommaa helpottaa komenolla ssh-add ~/.ssh/id_rsa joka kysyy avaimen salasanan ja ottaa sen talteen ssh-agent-ohjelmaan jonka jälkeen sinun ei enää tarvitse syöttää sitä vastaavaa salasanaa, mutta tämä toimii vai yhdessä terminaalisessiossa kerrallaan joten hyöty jää melko minimaaliseksi. Tätä korjaamaan otamme scriptin nimeltä Keychain.

Tämän jälkeen ainakin kun avaa uuden terminaalin ajetaan tuo keychain scripti. Se käynnistää ssh-agentin mikäli se ei ole käynnissä ja ensimmäisellä kerralla kysyy avaimen salasanaa. Tämän jälkeen voit avata niin monta terminaalia kuin haluat ja kirjautua niillä haluamillesi palvelimille ilman tarvetta syöttää salasanaa. Jos kuitenkin et joskus halua käynnistää ssh-agenttia voit ohittaa salasana-kyselyn painamalla ctlr-c.

Kun lopetat työskentelyn voit sulkea ssh-agentin komennolla:

$ ssh-agent -k

Tämän jälkeen kirjautujalta kysytään taas normaalisi avaimen salasanaa.

Linkkejä