稼働中の複数のマシンでスクリプトを実行して、実行中のOS、実行中のサービス、構成など、それらに関する情報を収集しようとしています。ログに記録するマシンがあります。公開鍵が設定されているため、他のマシンにSSH接続する前に。そこから、パスワードを要求されることなく、他のすべてのマシンにSSH接続できます。
私がやりたいのは、そのマシンからこれらすべてのマシンへのログオンを自動化することですが、スクリプトは私のローカルマシンで実行されています。だから私はruby-ssh-gatewayについて学び、それを試していますが、pubkey認証を機能させることができないようです。
私はこのようなことをします:
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
しかし、Net::SSH::AuthenticationFailed
例外があります。
代わりに、次のようにパスワードを入力した場合:
gateway.ssh(machine, 'username', :password => 'password')
それは機能しますが、パスワードはマシン間で同じではないため、それは実行可能ではありません。
誰かが私がこれを機能させる方法を知っていますか?
ありがとう。