Frage

Ich versuche, ein Skript in mehreren Rechnern laufen ich bei der Arbeit haben, einige Informationen über sie zu sammeln, wie dem OS sie laufen lassen, welche Dienste auf ihnen laufen, einige Konfigurationen etc. ich eine Maschine auf was ich log vor ssh-ing zu einem der anderen Maschinen, weil der öffentliche Schlüssel Setup hat. Von dort aus kann ich in alle anderen Maschinen ssh ohne Passwort gefragt zu werden.

Was möchte ich tun, ist die Protokollierung zu automatisieren auf alle diese Maschinen aus, dass man, aber das Skript auf meinem lokalen Rechner ausgeführt wird. Also habe ich gerade gelernt, über rubin ssh-Gateway und sind versucht, aber ich kann nicht pubkey Authentifizierung zur Arbeit zu kommen scheint.

ich etwas tun, wie folgt aus:

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

Aber ich bekomme eine Net::SSH::AuthenticationFailed Ausnahme.

Wenn stattdessen stelle ich das Passwort, etwa so:

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

es funktioniert, aber das ist nicht praktikabel, da Passwörter sind nicht gleich über Maschinen.

Wer weiß, wie ich diese Arbeit machen kann?

Danke.

War es hilfreich?

Lösung

Sind die Maschinen Sie sprechen hinter einem NAT-Firewall? Wenn nicht, Sie brauchen nicht rubin ssh-Gateway.

Haben Sie einen öffentlichen Schlüssel auf den Ursprung Feld erstellt, für den Benutzer, der das Programm ausgeführt wird, und da die Schlüssel für die Zielbenutzer auf jedem Zielfeld?

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

und um sicherzustellen, dass der Schlüssel funktioniert:

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

Wenn Sie das getan haben, es ist so einfach wie mit System oder Graviszeichen zu ssh berappen:

system('ssh machine "ls -l"')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top