2. lokakuuta 2000, (C) Joona I Palaste
Määritelmät:
Jos asiakkaan ja palvelimen välillä on sallittu .shosts -tiedoston käyttö, kaikki mitä tarvitaan on:
Palvelimella halutun käyttäjän kotihakemistoon luodaan tiedosto .shosts, jonka suojausarvo on 600 (omistaja saa lukea/kirjoittaa, kukaan muu ei saa tehdä mitään), ja jonka sisältö on:
missä "koneennimi" on asiakaskoneen täydellinen DNS-nimi, ja "käyttäjä" on haluttu käyttäjätunnus asiakaskoneella. Jos siis palvelinkoneella "teletran1.helsinki.fi" lukee tiedostossa "~optimus/.shosts":koneennimi käyttäjä
niin käyttäjän tarvitsee vain kirjoittaa:mobile.helsinki.fi prime
ja SSH autentikoi hänet ilman salasanaa.prime@mobile: ssh optimus@teletran1
Useimmissa ympäristöissä .shosts -tiedoston käyttö ei ole sallittua, koska jokin kolmas kone voi tekeytyä asiakaskoneeksi nyysimällä sen DNS-nimen. Tällöin tarvitaan RSA-autentikointia.
Ensimmäiseksi, kummassakin koneessa ajetaan ssh-keygen. Tämä luo koneille yksityisen avaimen ".ssh/identity" ja julkisen avaimen ".ssh/identity.pub". Yksityinen avain näyttää tutkittaessa kasalta käsittämätöntä roskaa, julkinen avain näyttää pitkältä heksadesimaalirimpsulta, jonka perässä on koneen DNS-nimi.
Tämän jälkeen asiakaskoneen julkinen avain lisätään palvelinkoneella tiedostoon ".ssh/authorized_keys". (Julkinen avain on vain yksi ainoa rivi, authorized_keys -tiedostossa on siis yksi rivi per asiakaskone.)
Kun SSH-yhteys halutaan muodostaa, asiakaskoneella tulee ajaa ssh-agent. Se tulostaa komennot, jolla asetetaan pari ympäristömuuttujaa. Kun muuttujat on asetettu, ajetaan ssh-add, ja RSA-avaimet on otettu käyttöön. Nyt asiakas voi autentikoitua suoraan palvelimelle. Esimerkki:
[prime@mobile:~]% ssh-agent SSH_AUTH_SOCK=/tmp/ssh-prime/ssh-9080-agent; export SSH_AUTH_SOCK; SSH_AGENT_PID=9081; export SSH_AGENT_PID; echo Agent pid 9081; [prime@mobile:~]% SSH_AUTH_SOCK=/tmp/ssh-prime/ssh-9080-agent; export SSH_AUTH_SOCK; [prime@mobile:~]% SSH_AGENT_PID=9081; export SSH_AGENT_PID; [prime@mobile:~]% ssh-add identity added: ~prime/.ssh/identity (prime@mobile) [prime@mobile:~]% ssh optimus@teletran1
SSH:lle voidaan antaa parametrina UNIX-komento, jolloin SSH ottaa yhteyden palvelinkoneeseen, suorittaa siinä komennon, ja poistuu. Komennon tulostus tulee tavalliseen stdout-tietovirtaan, jolloin se voidaan napata tiedostoon esim:
[prime@mobile:~]% ssh optimus@teletran1 "cat Salainen_Suunnitelma.txt" >Salainen_Suunnitelma_Kopio.txt
Javassa ohjelmia voi ajaa java.lang.Runtime.exec() -metodin avulla. Sille annetaan parametriksi ajettava komento, ja se palauttaa arvonaan java.lang.Process -olion, jolle voi sitten kutsua waitFor() -metodia, joka odottaa, että komento on ehtinyt mennä loppuun asti. Poikkeukset java.io.IOException ja java.lang.InterruptedException täytyy siepata. Esimerkkikoodi ajaa komennon "xterm" tuoden ruudulle uuden xterm- ikkunan.
Process p = null; try { p = Runtime.getRuntime().exec("xterm"); } catch (java.io.IOException e) { } if (p != null) { try { p.waitFor(); } catch (InterruptedException e) { } }