start (Net::SSH)

         # File lib/net/ssh.rb, line 152
    152:     def self.start(host, user, options={}, &block)
    153:       invalid_options = options.keys - VALID_OPTIONS
    154:       if invalid_options.any?
    155:         raise ArgumentError, "invalid option(s): #{invalid_options.join(', ')}"
    156:       end
    157:
    158:       options[:user] = user if user
    159:       options = configuration_for(host, options.fetch(:config, true)).merge(options)
    160:       host = options.fetch(:host_name, host)
    161:
    162:       if !options.key?(:logger)
    163:         options[:logger] = Logger.new(STDERR)
    164:         options[:logger].level = Logger::FATAL
    165:       end
    166:
    167:       if options[:verbose]
    168:         options[:logger].level = case options[:verbose]
    169:           when Fixnum then options[:verbose]
    170:           when :debug then Logger::DEBUG
    171:           when :info  then Logger::INFO
    172:           when :warn  then Logger::WARN
    173:           when :error then Logger::ERROR
    174:           when :fatal then Logger::FATAL
    175:           else raise ArgumentError, "can't convert #{options[:verbose].inspect} to any of the Logger level constants"
    176:         end
    177:       end
    178:
    179:       transport = Transport::Session.new(host, options)
    180:       auth = Authentication::Session.new(transport, options)
    181:
    182:       user = options.fetch(:user, user)
    183:       if auth.authenticate("ssh-connection", user, options[:password])
    184:         connection = Connection::Session.new(transport, options)
    185:         if block_given?
    186:           yield connection
    187:           connection.close
    188:         else
    189:           return connection
    190:         end
    191:       else
    192:         raise AuthenticationFailed, user
    193:       end
    194:     end