gpt4 book ai didi

ruby 网络 ssh : How to authenticate with pubkey using a gateway

转载 作者:太空宇宙 更新时间:2023-11-03 16:11:49 25 4
gpt4 key购买 nike

我正在尝试在我工作的几台机器上运行脚本,以收集有关它们的一些信息,例如它们正在运行的操作系统、在它们上运行的服务、一些配置等。我有一台机器我在 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')

它确实有效,但这是不可行的,因为不同机器的密码不同。

有谁知道我怎样才能使它工作?

谢谢。

最佳答案

与您通话的机器是否在 NAT 防火墙后面?如果没有,则不需要 ruby​​-ssh-gateway。

您是否在原始盒上为运行程序的用户创建了一个公钥,并将该 key 提供给每个目标盒上的目标用户?

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

并确保 key 正常工作:

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

完成后,使用 system 或反引号来 shell out 到 ssh 就很简单了:

system('ssh machine "ls -l"')

关于 ruby 网络 ssh : How to authenticate with pubkey using a gateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com