Domanda

Sto cercando di eseguire uno script in diverse macchine che ho al lavoro, per raccogliere alcune informazioni su di loro, come ad esempio quale sistema operativo sono in esecuzione, ciò che i servizi eseguito su di loro, alcune configurazioni, ecc Ho una macchina su che io registro prima ssh-zione ad una qualsiasi delle altre macchine, a causa della messa a punto chiave pubblica che ha. Da lì, posso ssh in tutte le altre macchine senza essere chiesto per la password.

Quello che voglio fare è quello di automatizzare la registrazione su tutte queste macchine da quello, ma lo script è in esecuzione sulla mia macchina locale. Così ho imparato a conoscere ruby-ssh-gateway e che sto cercando, ma non riesco a ottenere l'autenticazione pubkey funzionare.

Lo faccio qualcosa di simile:

gateway = Net::SSH::Gateway.new('gatewaymachine', 'username', :password => 'password')
all_machines.each do |machine|
  gateway.ssh(machine, 'username') do |ssh|
    uname = ssh.exec!('uname -a')
    puts "machine: #{machine}; OS: #{uname}"
  end
end

Ma ottengo un'eccezione Net::SSH::AuthenticationFailed.

Se, invece, fornisco la password, in questo modo:

gateway.ssh(machine, 'username', :password => 'password')

funziona, ma non è praticabile, dal momento che le password non sono le stesse macchine attraverso.

Qualcuno sa come posso fare questo lavoro?

Grazie.

È stato utile?

Soluzione

sono le macchine si sta parlando dietro un firewall NAT? In caso contrario, non è necessario ruby-ssh-gateway.

Avete creato una chiave pubblica sulla scatola di origine, per l'utente che esegue il programma, e dato che la chiave per l'utente di destinazione su ogni scatola di destinazione?

$ ssh-keygen -t dsa    # Only do this once
$ ssh-copy-id -i ~/.ssh/id_dsa.pub user@machine
(enter the password)

e per assicurarsi che la chiave sta lavorando:

$ ssh user@machine      # should not ask for a password

Una volta fatto questo, è semplice come utilizzare il sistema o apice inverso a sborsare per ssh:

system('ssh machine "ls -l"')
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top