# File lib/net/ssh/authentication/session.rb, line 53
53:     def authenticate(next_service, username, password=nil)
54:       debug { "beginning authentication of `#{username}'" }
55: 
56:       transport.send_message(transport.service_request("ssh-userauth"))
57:       message = expect_message(SERVICE_ACCEPT)
58: 
59:       key_manager = KeyManager.new(logger, options)
60:       keys.each { |key| key_manager.add(key) } unless keys.empty?
61:       key_data.each { |key2| key_manager.add_key_data(key2) } unless key_data.empty?
62: 
63:       attempted = []
64: 
65:       @auth_methods.each do |name|
66:         begin
67:           next unless @allowed_auth_methods.include?(name)
68:           attempted << name
69: 
70:           debug { "trying #{name}" }
71:           begin 
72:             method = Methods.const_get(name.split(/\W+/).map { |p| p.capitalize }.join).new(self, :key_manager => key_manager)
73:           rescue NameError => ne
74:             debug{"Mechanism #{name} was requested, but isn't a known type.  Ignoring it."}
75:             next
76:           end
77: 
78:           return true if method.authenticate(next_service, username, password)
79:         rescue Net::SSH::Authentication::DisallowedMethod
80:         end
81:       end
82: 
83:       error { "all authorization methods failed (tried #{attempted.join(', ')})" }
84:       return false
85:     ensure
86:       key_manager.finish if key_manager
87:     end