使用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
的位置有关
答案 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