我正在尝试在我工作的几台机器上运行一个脚本,以收集有关它们的一些信息,例如它们正在运行的操作系统、在它们上运行的服务、一些配置等。我有一台我登录的机器在 ssh-ing 到任何其他机器之前,因为它具有公钥设置。从那里,我可以 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')
它确实有效,但这是不可行的,因为不同机器的密码不同。
有谁知道我怎样才能使这项工作?
谢谢。