# File lib/net/ssh/transport/session.rb, line 71
        def initialize( host, options={} )
          @saved_message = nil
          @session_id = nil

          yield self

          invalid_options = options.keys - VALID_OPTIONS

          unless invalid_options.empty?
            raise ArgumentError,
              "invalid option(s) to #{self.class}: #{invalid_options.inspect}"
          end

          @port = options[ :port ] || @default_port
          @socket = timeout( options[:timeout] || 0 ) do
            ( options[:proxy] || @socket_factory ).open( host, @port )
          end

          @packet_sender.socket = @socket
          @packet_receiver.socket = @socket

          @kex_info = {
            :client_version_string => self.class.version,
            :server_version_string =>
              @version_negotiator.negotiate( @socket, self.class.version ) }

          @options = options
          kexinit
        end