14: def authenticate(next_service, username, password=nil)
15: return false unless password
16:
17: send_message(userauth_request(username, next_service, "password", false, password))
18: message = session.next_message
19:
20: case message.type
21: when USERAUTH_SUCCESS
22: debug { "password succeeded" }
23: return true
24: when USERAUTH_FAILURE
25: debug { "password failed" }
26:
27: raise Net::SSH::Authentication::DisallowedMethod unless
28: message[:authentications].split(/,/).include? 'password'
29:
30: return false
31: when USERAUTH_PASSWD_CHANGEREQ
32: debug { "password change request received, failing" }
33: return false
34: else
35: raise Net::SSH::Exception, "unexpected reply to USERAUTH_REQUEST: #{message.type} (#{message.inspect})"
36: end
37: end