Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Ville Pöntinen - 18.08.06 - klo:14.21

Otsikko: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: Ville Pöntinen - 18.08.06 - klo:14.21

Tervehdys!

Onko ssh:lla mahdollista ottaa yhdellä komennolla yhteys useaan koneeseen kerralla ja syöttää sitten tietty komento kaikille koneille?

"Kohdekoneissa" on opensshserver päällä, ubuntu 6.06 ja kaikissa sama käyttäjätunnus, jolla kirjautuisin. Tiedättekö ohjelmaa tai openssh:n keinoa tehdä tällaista?
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: mk1970 - 18.08.06 - klo:18.09

Tervehdys!

Onko ssh:lla mahdollista ottaa yhdellä komennolla yhteys useaan koneeseen kerralla ja syöttää sitten tietty komento kaikille koneille?

"Kohdekoneissa" on opensshserver päällä, ubuntu 6.06 ja kaikissa sama käyttäjätunnus, jolla kirjautuisin. Tiedättekö ohjelmaa tai openssh:n keinoa tehdä tällaista?

Ei yhdellä kertaa mutta kelpaako tälläinen (talleta oheinen tiedostoksi ja anna chmod 755 tiedostonnimi antaaksesi ajo-oikeudet sille):

Koodia: [Valitse]
#!/bin/sh

for i in kone1 kone2 kone3
do
  ssh ${i} komento
done

Yllä oleva siis ottaa yksi kerrallaan yhteyden kolmeen eri koneeseen ja ajaa niissä saman komennon.
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: mk1970 - 18.08.06 - klo:18.22
Ja jotta yllä oleva toimii järkevästi niin kannattaa käyttää DSA-avaimia (ilman salasanasuojausta) autentikointiin jotta ei tarvitse antaa salasanaa joka koneelle. Eli siis jotain tämän tyylistä siinä koneessa tehtynä jossa tuo skripti ajetaan:

Koodia: [Valitse]
# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/xxx/.ssh/id_dsa.
Your public key has been saved in /home/xxx/.ssh/id_dsa.pub.
The key fingerprint is:
f4:68:75:47:4d:7a:64:9d:c8:62:ae:35:41:34:31:5e xxx@kone

# scp .ssh/id_dsa.pub kone1:.ssh/authorized_keys
# scp .ssh/id_dsa.pub kone2:.ssh/authorized_keys
# scp .ssh/id_dsa.pub kone3:.ssh/authorized_keys
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: Ville Pöntinen - 18.08.06 - klo:18.42

Koodia: [Valitse]
#!/bin/sh

for i in kone1 kone2 kone3
do
  ssh ${i} komento
done

Yllä oleva siis ottaa yksi kerrallaan yhteyden kolmeen eri koneeseen ja ajaa niissä saman komennon.

Jääkö tuo odottamaan kunnes kone1 on suorittanut komennon ennenkuin ottaa yhteyttä koneeseen kone2? Jos jää, niin ei sovi mun tarkoitukseen  :-\



Ja jotta yllä oleva toimii järkevästi niin kannattaa käyttää DSA-avaimia (ilman salasanasuojausta) autentikointiin jotta ei tarvitse antaa salasanaa joka koneelle. Eli siis jotain tämän tyylistä siinä koneessa tehtynä jossa tuo skripti ajetaan:

Koodia: [Valitse]
# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/xxx/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/xxx/.ssh/id_dsa.
Your public key has been saved in /home/xxx/.ssh/id_dsa.pub.
The key fingerprint is:
f4:68:75:47:4d:7a:64:9d:c8:62:ae:35:41:34:31:5e xxx@kone

# scp .ssh/id_dsa.pub kone1:.ssh/authorized_keys
# scp .ssh/id_dsa.pub kone2:.ssh/authorized_keys
# scp .ssh/id_dsa.pub kone3:.ssh/authorized_keys


Tätä en ymmärtänyt? Pitää kokeilla... Siis tuon tekeminen _vain_ sillä koneella, josta yhteydet otetaan, riittäisi?

Eräässä aiemmassa ketjussa T.M kirjoitti:

Lisäksi on olemassa "ohjelma" jolla voi suorittaa terminaalikomennot ssh:n yli monella sadalla koneella yhdellä kertaa. Tätä voi käyttää hätätapauksissa esim. vihoittelevien pakettien poistossa tai erikoisempien päivitysten teossa. (En nyt löytänyt freshmeat:stä tätä programmia, joku viisaampi varmaan neuvoo).

Jos vain T.M tai kuka vaan muu tietää/löytää tämän "ohjelman" (scripti?) niin viestiä kehään kiitos!
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: mk1970 - 18.08.06 - klo:19.08
Jääkö tuo odottamaan kunnes kone1 on suorittanut komennon ennenkuin ottaa yhteyttä koneeseen kone2? Jos jää, niin ei sovi mun tarkoitukseen  :-\

Jää odottomaan. Mutta ainahan sen ssh:n voi käynnistää taustalle (lisäämällä rivin loppuun & -merkin) jos etäkoneessa ajettava ohjelma tekee kaiken taustalla eikä vaadi mitään inputtia käyttäjältä. Lisäksi kannattaa huomioida, että ohjelma voi vaatia tty:n tai se ei toimi oikein. Ratkaisu saattaa olla käyttää -t parametriä ssh:n kanssa.

Tätä en ymmärtänyt? Pitää kokeilla... Siis tuon tekeminen _vain_ sillä koneella, josta yhteydet otetaan, riittäisi?

Riittää kun siirrät julkisen avaimen yhteyden ottavasta koneesta kohteeseen. Totta kai voit jokaisella koneella luoda julkisen avaimen ja laittaa sen muiden koneiden authorized_keys tiedostoon mutta jos riittää että kone0 ottaa yhteyden koneisiin 1,2 ja 3 niin antamani esimerkki riittää.
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: Ville Pöntinen - 18.08.06 - klo:19.41

Ahaa. Noita kohdekoneita vaan kun on 76...
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: Asmo Koskinen - 18.08.06 - klo:21.29
Noita kohdekoneita vaan kun on 76...

Skriptin nimi on "Mussh".

Tein sen käytöstä ohjeen:

http://forum.ubuntu-fi.org/index.php?topic=4740.0

Joudut ensimmäisellä keralla kopiomaan julkisen avaimen 76 kertaa, mutta sen jälkeen riittää pelkkä Mussh-skripti.

Koska itse en hallinnoi kuin yhtä konetta (arkki.info), niin en voi tarjota enempää tosimaailman esimerkkejä. Mutta hyvin tuo näytti toimivan.

Ystävällisin terveisin Asmo Koskinen.
Otsikko: Re: Ssh-ohjelma / scripti yhden ssh-yhteyden avaamiseen usealle koneelle?
Kirjoitti: Manda - 07.09.06 - klo:14.38
pdsh:lla pystyy myös hoitamaan monta yhteyttä kerralla.
http://www.llnl.gov/linux/pdsh/pdsh.html
Mut ssh avaimet kannataa pitää salasana suojattuna ja käyttää ssh-add (ja ssh-agent:tia) sillon kun tarvii manageroida isoa määrää koneita.
Toivoittavasti tällä pääsee alkuun.