使用gem net / ssh< = Net :: SSH :: AuthenticationFailed时出错

时间:2015-12-28 19:00:47

标签: ruby ssh server

使用gem net/ssh时我收到错误:

/usr/local/lib/ruby/gems/1.9.1/gems/net-ssh-2.0.23/lib/net/ssh.rb:192:in
`start': Net::SSH::AuthenticationFailed (Net::SSH::AuthenticationFailed)

我真的不明白发生了什么......?我完成了我的研究并发现了this,但它并没有真正回答我的问题......

认证失败的具体原因是什么?我所做的只是ssh到不同的服务器,我需要改变一些特定的东西吗?

来源:

require 'rubygems'
require 'net/ssh'
require 'etc'

print "Enter password: "
system "stty -echo"
@password = gets.chomp
system "stty echo"

def logged_in(server)
  cmd = `who`.gsub(/[ \t].*/,"").gsub(/\A.*\n/,'')
  check = Net::SSH.start(@host, @username, :password => @password) do |ssh|
    ssh.exec!(cmd)
  end
end

@host = %w(server_names_here) do |server|
  logged_in(server)
end
@username = Etc.getlogin

我认为这可能是错误的密码,所以我尝试使用echo“on”输入密码,我输入正确的密码,我也想也许它没有拉我的用户名所以我使用了:@username = 'my_username'我我仍然收到同样的错误

修改 发现问题,它与放置@username的位置有关

1 个答案:

答案 0 :(得分:0)

问题与放置@username的位置有关。

require 'rubygems'
require 'net/ssh'
require 'etc'

print "Enter password: "
system "stty -echo"
@password = gets.chomp
system "stty echo"
@username = Etc.getlogin #<= YAY!

def logged_in(server)
  cmd = `who`.gsub(/[ \t].*/,"").gsub(/\A.*\n/,'')
  check = Net::SSH.start(@host, @username, :password => @password) do |ssh|
    ssh.exec!(cmd)
  end
end

@host = %w(server_names_here) do |server|
  logged_in(server)
end