This file is indexed.

/usr/lib/ruby/vendor_ruby/net/ssh/transport/server_version.rb is in ruby-net-ssh 1:2.6.8-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
require 'net/ssh/errors'
require 'net/ssh/loggable'
require 'net/ssh/version'

module Net; module SSH; module Transport

  # Negotiates the SSH protocol version and trades information about server
  # and client. This is never used directly--it is always called by the
  # transport layer as part of the initialization process of the transport
  # layer.
  #
  # Note that this class also encapsulates the negotiated version, and acts as
  # the authoritative reference for any queries regarding the version in effect.
  class ServerVersion
    include Loggable

    # The SSH version string as reported by Net::SSH
    PROTO_VERSION = "SSH-2.0-Ruby/Net::SSH_#{Net::SSH::Version::CURRENT} #{RUBY_PLATFORM}"

    # Any header text sent by the server prior to sending the version.
    attr_reader :header

    # The version string reported by the server.
    attr_reader :version

    # Instantiates a new ServerVersion and immediately (and synchronously)
    # negotiates the SSH protocol in effect, using the given socket.
    def initialize(socket, logger)
      @header = ""
      @version = nil
      @logger = logger
      negotiate!(socket)
    end

    private

      # Negotiates the SSH protocol to use, via the given socket. If the server
      # reports an incompatible SSH version (e.g., SSH1), this will raise an
      # exception.
      def negotiate!(socket)
        info { "negotiating protocol version" }

        loop do
          @version = ""
          loop do
            begin
              b = socket.readpartial(1)
              raise Net::SSH::Disconnect, "connection closed by remote host" if b.nil?
            rescue EOFError
              raise Net::SSH::Disconnect, "connection closed by remote host"
            end
            @version << b
            break if b == "\n"
          end
          break if @version.match(/^SSH-/)
          @header << @version
        end

        @version.chomp!
        debug { "remote is `#{@version}'" }

        unless @version.match(/^SSH-(1\.99|2\.0)-/)
          raise Net::SSH::Exception, "incompatible SSH version `#{@version}'"
        end

        debug { "local is `#{PROTO_VERSION}'" }
        socket.write "#{PROTO_VERSION}\r\n"
        socket.flush
      end
  end
end; end; end